home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Information / Gestalt Selectors List 2.5 < prev   
Text File  |  1994-05-29  |  162KB  |  3,746 lines

  1.  
  2. Gestalt Selectors List 2.5
  3. ==========================
  4. First published: 12 October 1992, 13:15 CET (GMT+1)
  5. Last modified  : 29 May 1994, 18:20 CET (GMT+2, DST)
  6.  
  7. This document lists all selectors known to the editor. These can include
  8. selector codes installed by Apple (system) software or by software from
  9. third and so called "fourth" parties (your software?).
  10. The information in this list is useful for programmers and other people
  11. who can use the Gestalt Manager thru externals (with HyperCard,
  12. 4th Dimension etc.).
  13.  
  14. This file can be best viewed with a mono-spaced font like Monaco. Because
  15. it is wrapped as setext you can use several utilities to index and read it.
  16. For the Macintosh you can use Easy View and on a UNIX system sv (setext
  17. viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu
  18. (or its mirrors!), archived respectively as:
  19.      info-mac/text/easy-view-244.hqx
  20.      info-mac/text/setext-viewer-03-unix.uu
  21.  
  22. See for more information about this list the chapters at the end.
  23.  
  24. Contents
  25. --------
  26.     Changes
  27.       Contributions
  28.       Changes Overview
  29.     Gestalt Selector Codes
  30.       Apple System Software
  31.       Apple Additional Software
  32.       Third Parties Software
  33.     Unknown Gestalt Selector Codes
  34.       Apple System Software
  35.       Apple Additional Software
  36.       Third Parties Software
  37.     Gestalt Manager Calls
  38.       Gestalt Manager Routines
  39.       Undocumented Gestalt Manager Routines
  40.       Gestalt Value Routines
  41.     History
  42.       Environs
  43.       SysEnvirons
  44.       Gestalt
  45.     Reports
  46.       AppleShare File & Print Server selector codes
  47.       AppleTalk
  48.       Copy protection using Gestalt
  49.       Environs & SysEnvirons
  50.       Executor Mac-emulator
  51.       GestaltValue
  52.       Glue code
  53.       RAM Doubler 1.0
  54.       QuickTime
  55.     Kilo-liners
  56.       Direct Gestalt Calls
  57.       Direct GestaltValue Calls
  58.       GestaltSelectorZero
  59.     Abbreviations
  60.     Sources
  61.     Related Software
  62.     About this list
  63.       Availability
  64.       Acknowledgements
  65.     Definitions and Format
  66.       Use in Language
  67.       Definitions
  68.       Format Selector Entry
  69.       Format Version Numbers
  70.     Legal Stuff
  71.       Notice of Liability
  72.       Trademarks
  73.       Distribution
  74.     Editor's Address
  75.  
  76. Changes
  77. =======
  78. All contributions and changes to this list since the previous version are
  79. listed in this chapter.
  80.  
  81. Contributions
  82. -------------
  83. The following persons contributed to this version:
  84.  
  85. _Person:                Software:               Selector(s) added/changed:    _
  86. Anonymous              System (enabler)        mach, powr, sdev, sdvr, xlat
  87.                        System 7.5?             apml, cate, clbv, fs  , gpad,
  88.                                                gprf, grfx, HAM , help, nlup,
  89.                                                os  , pmgr, pxtn, qdgx, qdrw,
  90.                                                snhw, thds, tpad, vdrc
  91. Daniel Azuma           FileTyper Menu cp       TExT, Typ4
  92. Lawrence D'Oliveiro    System                  kbd 
  93. Roland Mansson         Display Enabler 1.0 ext iadj
  94.                        PowerBook cp?           harp
  95.                        Shared Library Manager ext
  96.                                                aslm
  97.                        System (enabler)        bugy, cput, mach, qd  
  98.                        System (enabler)?       serh
  99.                        unknown                 a pc, immg, octb, tpad
  100.                        unknown system          detc, ldap
  101.                        unknown Third Party?    PhoN
  102. Marco Piovanelli       System (enabler)        kbd 
  103.                        System?                 XTND
  104.                        Shared Code Manager ext SHCM
  105. Dave Radcliffe         System (enabler)        cput
  106. Rene G.A. Ros          Agent Virtual User      AgVU
  107.                        AppleScript ext         ascr, ascv
  108.                        Asante EN/SC ext        ASTN
  109.                        Authentication Manager cp
  110.                                                UMAM
  111.                        Color ICON Mania cp     CiCN
  112.                        Color Sync ext          cmta, cmtc, cpnt
  113.                        Drag and Drop ext       drag
  114.                        Easy Access cp          easy
  115.                        FaxMonitor ext          SCTR
  116.                        HearIt 1.0 cp           HrIt
  117.                        Keys! 1.0               DCKc
  118.                        NoDesktopCleanup cp     DCDt
  119.                        Performa 1.1 cp         bast, ppad, pprf
  120.                        PowerBook Setup cd 7.3.1
  121.                                                PhoN
  122.                        PowerClick 1.0 cp       DanS
  123.                        PrintPatrol 1.0 appl    PtrP
  124.                        Speak Note cp           IF 8
  125.                        System misc.            bugy, bugz
  126.                        System (enabler)        a/ux, ctbv, evnt, intd, kbd ,
  127.                                                mach, mixd, port, stdf, vers
  128.                        System 7.1P?            ppad, pprf
  129.                        System Update 3.0 ext   bugx
  130.                        TV Setup 1.0 cp         mtv!
  131.                        unknown                 vdrc, XTND
  132.                        unknown system          mash
  133. Eric Schlegel (Microsoft)
  134.                        Shared Code Manager ext SHCM
  135. L.H. Wood              AfterDark/DarkSide...   SAVC, SAVR
  136.  
  137. _Person:                Chapter/Section(s):                                   _
  138. Anonymous              Reports                 RAMDoubler 1.0
  139. Roland Mansson         Related Software        Gestalt! appl
  140. Rene G.A. Ros          History
  141.                        Reports                 Environs & SysEnvirons
  142.                                                RAMDoubler 1.0,
  143.                        Related Software        AfterDark Gestalt file
  144.                                                DisplayGestalt appl,
  145.                                                TechTool appl 1.0.4,
  146.                                                Userfunction Gestalt code
  147. Eric Schlegel (Microsoft)
  148.                        Abbreviations
  149.  
  150. Changes Overview
  151. ----------------
  152. Added selectors
  153.   Apple System  : -
  154.   Apple Add.    : sdev, sdvr, XTND
  155.   Third Parties : IF 8, SHCM, TExT, Typ4, UMAM
  156. Added unknown
  157.   Apple System  : aslm, bugx, detc, harp, iadj, ldap, mtv!, PhoN, ppad, pprf,
  158.                   serh, tpad, vdrc
  159.   Apple Add.    : a pc, cmta, HrIt, immg
  160.   Third Parties : ASTN, CiCN, DCDt, DCKc, PtrP
  161. Changed selectors
  162.   Apple System  : a/ux, cpnt, cput, ctbv, easy, evnt, fs  , help, intd, kbd ,
  163.                   mach, mixd, nlup, os  , qdrw, stdf, vers
  164.   Apple Add.    : apml, ascr, ascv, cate, clbv, cmtc, drag, gprf, grfx, pmgr,
  165.                   pxtn, qdgx, snhw, thds, xlat
  166.   Third Parties : SAVC, SAVR
  167. Changed unknown
  168.   Apple System  : bast, mash
  169.   Apple Add.    : -
  170.   Third Parties : SCTR
  171. Previously unknown
  172.   Apple System  : -
  173.   Apple Add.    : cmta
  174.   Third Parties : XTND
  175. Includes updates 2.4.1 up to and including 2.4.6, send to subscribers of
  176. the mailing list.
  177.  
  178. Welcome to the InstallerMaker users!
  179. Recently I reached an agreement with Aladdin Systems to include the GSL
  180. with their "InstallerMaker" product. Simply put, it is StuffIt but it
  181. unstuffs the files and folders to pre-defined positions. The person who
  182. puts the installer together can set certain conditions when to install the
  183. files or folders based on information from the Gestalt Manager amongst
  184. other ways. This feature to use the Gestalt Manager is included with the
  185. released 2.0 version.
  186. For more information about "InstallerMaker" you can contact Aladdin via
  187. their usual email addresses (i.e. aladdin@well.sf.ca.us) or contact Leonard
  188. Rosenthol (leonardr@netcom.com). A demo copy of InstallerMaker can be found
  189. on the usual FTP-sites.
  190.  
  191. Roland Mansson reported a new QuickDraw version (1.3.5?) and an
  192. inconsistency with the 'cput' selector. This latter problem is because an
  193. interface file is wrong which has been confirmed by Apple (Thanks to
  194. Dave Radcliffe).
  195. And also a few new, but unknown, selectors.
  196.  
  197. The PowerPC Upgrade Card enabler revealed more machine IDs of upgraded
  198. machines.
  199.  
  200. These selectors were found to have some sort of a problem:
  201. - ascv (different version format returned by AppleScript 1.0 and 1.1)
  202. - aslm (if it returns a version number, it does so incorrect with version
  203.        1.1.1 of the Shared Library Manager)
  204. - cput (incorrect values for 68K)
  205. - evnt (overlap of attribute bits)
  206. - intd (bit 1 of response never set on PB Duo 210)
  207. - kbd  (contradicting information on values for Adjustable Keyboards)
  208. - sdvr (two meanings)
  209. - grfx, pmgr, qdgx (all return 65536 with System 7.5 beta)
  210.  
  211. Also included are some changes based on information from the April 1994
  212. Developer CD (System Software Edition), the May 1994 Developer CD (Tool
  213. Chest) and the E.T.O. #14 CD.
  214.  
  215. Included is some speculative information about the function to which a
  216. pointer is returned by the 'vmFn' selector. This selector is returned by
  217. RAM Doubler, and seems to provide additional information.
  218.  
  219. The reference numbers to the sources are changed into codes which make it
  220. clearer what kind of source it is. They are listed with the 'Sources'
  221. chapter.
  222. A new chapter 'History' was added to include some historical data about the
  223. Gestalt Manager and its predecessors. If you have additional information,
  224. like the names of the programmers, let me know.
  225.  
  226. Gestalt Selector Codes
  227. ======================
  228. The following sections list selector codes of which the meaning is know.
  229.  
  230. Apple System Software
  231. ---------------------
  232. a/ux (System [6.0.4])
  233.      gestaltAUXVersion
  234.      Returns the version of A/UX, if it is executing, as BCD?
  235.  
  236.      gestaltAUXVersion = 'a/ux'; {A/UX version, if present}
  237.  
  238.      NOTE:
  239.      This selector also indicates if you're running under MAE on a
  240.      UNIX machine. *AD08
  241. addr (System [6.0.4])
  242.      gestaltAddressingModeAttr
  243.      Returns information about the current addressing mode.
  244.  
  245.      gestaltAddressingModeAttr = 'addr'; {addressing mode attributes}
  246.      gestalt32BitAddressing    = 0;      {started up with 32-bit addr.}
  247.      gestalt32BitSysZone       = 1;      {system heap has 32-bit clean}
  248.                                          {block headers}
  249.      gestalt32BitCapable       = 2;      {machine is 32-bit capable}
  250. alis (System [7.0])
  251.      (Remote Access Aliases ext [1.0?], part of Apple Remote Access)
  252.      gestaltAliasMgrAttr
  253.      Returns information about the Alias Manager.
  254.  
  255.      gestaltAliasMgrAttr                    = 'alis';{Alias Mgr attributes}
  256.      gestaltAliasMgrPresent                 = 0;
  257.      gestaltAliasMgrSupportsRemoteAppletalk = 1; {supports Remote Appletalk}
  258.                                                  *AD02
  259.      gestaltAlias???                        = 2; {since System 7.1 Pro}
  260.  
  261.      NOTE: See 'Reports' chapter (QuickTime section) for more information.
  262. atkv (System [7.0, AppleTalk 56])
  263.      gestaltATalkVersion *AT02
  264.      Returns AppleTalk version as NumVersion.
  265.  
  266.      This is different from 'atlk' !
  267.  
  268.      gestaltATalkVersion = 'atkv'; {AppleTalk version} *AD01/M01
  269.  
  270.      WARNING:
  271.      This selector returns the majorRev field of the NumVersion record as
  272.      hexadecimal instead of the usual BCD.
  273.  
  274.      NOTE: See 'Reports' chapter (AppleTalk section) for more information.
  275. atlk (System [6.0.4])
  276.      gestaltAppleTalkVersion
  277.      Returns the version of the .MPP driver as INTEGER.
  278.  
  279.      gestaltAppleTalkVersion = 'atlk'; {AppleTalk version}
  280.  
  281.      LAPMgrExists := (AppleTalkVersion >= 53); *AT02
  282. BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
  283.      gestaltCloseViewAttr
  284.      Returns information about the CloseView Control Panel.
  285.  
  286.      gestaltCloseViewAttr               = 'BSDa'; {CloseView attributes}
  287.      gestaltCloseViewEnabled            = 0;
  288.      gestaltCloseViewDisplayMgrFriendly = 1;      {Closeview compatible}
  289.                                                   {with Display Manager}
  290.                                                   {(FUTURE)} *AS05
  291. cash (System [???]) *S03
  292.      gestaltRAMCacheSize
  293.      Returns byte-size of physical RAM allocated to Disk Cache.
  294.      0 = Disk Cache Off
  295.  
  296.      gestaltRAMCacheSize = 'cash'; {RAM cache size}
  297.  
  298.      NOTE:
  299.      This selector is listed in THINK Reference 1.0 but it is unknown which
  300.      System Software version should install it.
  301. cfrg (System? [7.1.2?])
  302.      gestaltCFMAttr
  303.      Returns information about the Code Fragment Manager on the PowerMac
  304.      machines.
  305.  
  306.      gestaltCFMAttr    = 'cfrg'; {Code Fragment Mgr attributes}
  307.      gestaltCFMPresent = 0;      {Code Fragment Manager is present}
  308. conn (System [7.0])
  309.      gestaltConnMgrAttr
  310.      Returns information about the Connection Manager.
  311.  
  312.      gestaltConnMgrAttr         = 'conn'; {Conn. Mgr attributes}
  313.      gestaltConnMgrPresent      = 0;      {Connection Mgr is present}
  314.      gestaltConnMgrCMSearchFix  = 1;      {fix for CMAddSearch present}
  315.      gestaltConnMgrErrorString  = 2;      {has CMGetErrorString} *AS02
  316.      gestaltConnMgrMultiAsyncIO = 3;      {CMNewsIOPB,CMDisposeIOPB,} *AS02
  317.                                           {CMPBRead,CMPBWrite,CMPBIOKill}
  318.  
  319.      NOTE:
  320.      With System 6, this Gestalt selector isn't implemented when the
  321.      Communications Toolbox is installed. (Michael Hecht)
  322. cpnt (System [7.1])
  323.      (Color Picker Extension ext [2.0])
  324.      (Color Sync ext [1.0.4?])
  325.      (Macintosh Easy Open ext? [1.0?])
  326.      (QuickTime ext [1.0])
  327.      (Sound Manager? ext [3.0?])
  328.      (Speech Manager ext [1.1.1])
  329.      gestaltComponentMgr
  330.      Returns Component Manager version as INTEGER.
  331.  
  332.      gestaltComponentMgr = 'cpnt'; {Component Mgr version} *AS01
  333. cput (System? [7.1.1?]) *AS04/AS05
  334.      gestaltNativeCPUtype
  335.      Returns a value that indicates the type of native processor that is
  336.      currently running.
  337.  
  338.      gestaltNativeCPUtype = 'cput'; {Native CPU type}
  339.  
  340.      {Motorola Architecture}
  341.      gestaltCPU68000 = $0x001;
  342.      gestaltCPU68010 = $0x002;
  343.      gestaltCPU68020 = $0x003;
  344.      gestaltCPU68030 = $0x004;
  345.      gestaltCPU68040 = $0x005;
  346.      {PowerPC Architecture}
  347.      gestaltCPU601   = $0x101;
  348.      gestaltCPU603   = $0x103;
  349.      gestaltCPU604   = $0x104;
  350.  
  351.      NOTE:
  352.      The 'sysa' selector indicates which range of values to expect?
  353.  
  354.      The GestaltEqu.h file published with E.T.O. #12 was replaced by the
  355.      one on E.T.O. #13. However there was made a mistake, it lists the 68K
  356.      values in the range 0-4 while it should be 1-5 as listed above.
  357.      This problem is acknowledged by Apple.
  358.      You can fix this problem by using the declarations listed above or by
  359.      using the GestaltEqu.h file from E.T.O. #13 but then test first the
  360.      gestaltSysArchitecture ('sysa') selector and when it reports a 68K
  361.      machine use gestaltProcessorType.
  362.      (Dave Radcliffe, Rene Ros, Roland Mansson)
  363. crm  (System [7.0])
  364.      (Communications Toolbox for System 6)
  365.      gestaltCRMAttr
  366.      Returns information about the Communications Resource Manager.
  367.  
  368.      gestaltCRMAttr          = 'crm '; {Comm. Resource Mgr attributes}
  369.      gestaltCRMPresent       = 0;      {Comm. Resource Mgr present}
  370.      gestaltCRMPersistentFix = 1;      {fix for persistent tools} *AS02
  371.      gestaltCRMToolRsrcCalls = 2;      {has CRMGetToolResource/}  *AS02
  372.                                        {ReleaseToolResource}
  373. ctbm (System [7.0])
  374.      (Communications Toolbox for System 6)
  375.      gestaltCTBManagersAttr
  376.      Returns information about the Communications Toolbox Managers, it is a
  377.      bitmask of which managers are present.
  378.  
  379.      gestaltCTBManagersAttr = 'ctbm'; {Comm. Mgrs attributes} *S02
  380. ctbu (System [7.0])
  381.      (Communications Toolbox for System 6)
  382.      gestaltCTBUtilsAttr
  383.      Returns information about the Communications Toolbox Utilities.
  384.  
  385.      gestaltCTBUtilsAttr    = 'ctbu'; {Comm. TB Utils attributes} *S02
  386.      gestaltCTBUtilsPresent = 0;      *S02
  387. ctbv (System [7.0])
  388.      (Communications Toolbox for System 6)
  389.      gestaltCTBVersion
  390.      Returns the version number of the Communications Toolbox.
  391.  
  392.      gestaltCTBVersion = 'ctbv'; {Comm. Toolbox version}
  393. dbac (System [7.0])
  394.      gestaltDBAccessMgrAttr
  395.      Returns information about the Data Access Manager.
  396.  
  397.      gestaltDBAccessMgrAttr = 'dbac'; {Data Access Mgr attributes}
  398. dfnd (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  399.      gestaltSDPFindVersion
  400.      Returns the SDP Find version as INTEGER.
  401.  
  402.      gestaltSDPFindVersion = 'dfnd'; {SDP Find version}
  403. dict (System [7.1])
  404.      gestaltDictionaryMgrAttr
  405.      Returns information about the Dictionary Manager.
  406.  
  407.      gestaltDictionaryMgrAttr    = 'dict'; {Dictionary Mgr attributes}
  408.      gestaltDictionaryMgrPresent = 0;
  409. ditl (System [7.0])
  410.      gestaltDITLExtAttr
  411.      Returns information about the Dialog Manager.
  412.  
  413.      gestaltDITLExtAttr    = 'ditl'; {Dialog Mgr attributes}
  414. dplv (System [7.1.2?]) *AS05
  415.      gestaltDisplayMgrVers
  416.      Returns Display Manager version as INTEGER?.
  417.  
  418.      gestaltDisplayMgrVers = 'dplv'; {Display Mgr version}
  419. dply (System [7.1.2?]) *AS05
  420.      gestaltDisplayMgrAttr
  421.      Returns information about the Display Manager.
  422.  
  423.      gestaltDisplayMgrAttr = 'dply'; {Display Mgr attributes}
  424.      gestaltDisplayMgrPresent = 0;   {True if Display Mgr is present}
  425.      gestalt???               = 1;
  426. dsig (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  427.      gestaltDigitalSignatureVersion
  428.      Returns version of the Digital Signature toolbox as BCD.
  429.  
  430.      gestaltDigitalSignatureVersion = 'dsig'; {Digitial Signature version}
  431. eajt (Easy Access cp [7.0])
  432.      gestaltEasyAccessJTable
  433.      Returns the base address of the Easy Access jump-trap table.
  434.  
  435.      gestaltEasyAccessJTable = 'eajt'; {Easy Access jump-trap table} *M01
  436. easy (Easy Access cp [7.0?])
  437.      gestaltEasyAccessAttr
  438.      Returns information about the status of Easy Access.
  439.  
  440.      gestaltEasyAccessAttr   = 'easy'; {Easy Access attributes}
  441.      gestaltEasyAccessOff    = 0;      {Easy Access present but off}
  442.      gestaltEasyAccessOn     = 1;      {Easy Access on}
  443.      gestaltEasyAccessSticky = 2;      {Easy Access "Sticky"}
  444.      gestaltEasyAccessLocked = 3;      {Easy Access "Locked"}
  445.  
  446.      NOTE:
  447.      The values listed above are not returned. Because of a bug different
  448.      values are returned. This problem is acknowledged by Apple, but it is
  449.      unclear when it will be fixed. They know about it since Sept. 1992...
  450.      (Rene Ros)
  451. edtn (System [7.0])
  452.      (Macintosh Easy Open? ext [1.0?])
  453.      gestaltEditionMgrAttr
  454.      Returns information about the Edition Manager.
  455.  
  456.      gestaltEditionMgrAttr             = 'edtn'; {Edition Mgr attributes}
  457.      gestaltEditionMgrPresent          = 0;
  458.      gestaltEditionMgrTranslationAware = 1; *AD03
  459. evnt (System [7.0]) *AS05
  460.      (Apple Event Manager ext [1.0.1], part of AppleScript Setup 1.0)
  461.      gestaltAppleEventsAttr
  462.      Returns information about Apple Events.
  463.  
  464.      gestaltAppleEventsAttr     = 'evnt'; {Apple events attributes}
  465.      gestaltAppleEventsPresent  = 0; {True if Apple Events present} *AS05
  466.      gestaltScriptingSupport    = 1;
  467.      gestaltOSLInSystem         = 2; {OSL is in system so don`t use}
  468.                                      {the one linked}
  469.  
  470.      MOTE:
  471.      Oh oh, what to do with these from PowerPC AEObjects header files
  472.      on ETO 14:
  473.      gestaltObjectSupportLibraryInSystem = 1,
  474.      gestaltObjectSupportLibraryPowerPCSupport = 2
  475. flag (Network Extension ext [System 7.0 *AT02])
  476.      gestaltFlagshipAttr
  477.      Returns information about the Flagship.
  478.  
  479.      gestaltFlagshipAttr       = 'flag'; *M01
  480.      gestaltFlagshipPresent    = 0;      *M01
  481.      gestaltFlagshipRegistered = 1;      *M01
  482. fndr (Finder [7.1.1b1?]) *AS04
  483.      gestaltFinderAttr
  484.      Returns information about the Finder?
  485.  
  486.      gestaltFinderAttr               = 'fndr';
  487.      gestaltFinderDropEvent          = 0;
  488.      gestaltFinderMagicPlacement     = 1;
  489.      gestaltFinderCallsAEProcess     = 2;
  490.      gestaltOSLCompliantFinder       = 3;
  491.      gestaltFinderSupports4GBVolumes = 4;
  492.      gestaltFinderHandlesCFMFailures = 5;
  493.      gestalt???                      = 6;
  494. fold (System [7.0])
  495.      gestaltFindFolderAttr
  496.      Returns information about the FindFolder function.
  497.  
  498.      gestaltFindFolderAttr    = 'fold'; {FindFolder attributes}
  499.      gestaltFindFolderPresent = 0;      {FindFolder function available}
  500. font (System [7.0])
  501.      (TrueType INIT ext for System 6)
  502.      gestaltFontMgrAttr
  503.      Returns information about the Font Manager.
  504.  
  505.      gestaltFontMgrAttr      = 'font'; {Font Mgr attributes}
  506.      gestaltOutlineFonts     = 0;
  507.      gestalt???              = 1;      {set with System 7.1}
  508.      gestaltDiskCachedFonts? = 2;      {Disk Cached Fonts available?}
  509.  
  510.      NOTE:
  511.      Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
  512.      with full subroutine names, there is a subroutine called
  513.      'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
  514.      of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
  515. fpu  (System [6.0.4])
  516.      gestaltFPUType
  517.      Returns a value that indicates the FPU-type, if any.
  518.  
  519.      gestaltFPUType  = 'fpu '; {FPU Type}
  520.      gestaltNoFPU    = 0;      {no FPU}
  521.      gestalt68881    = 1;      {68881 FPU}
  522.      gestalt68882    = 2;      {68882 FPU}
  523.      gestalt68040FPU = 3;      {built-in 68040 FPU} *S01
  524. fs   (System [7.0])
  525.      gestaltFSAttr
  526.      Returns information about the file system.
  527.  
  528.      gestaltFSAttr               = 'fs  '; {file-system attributes}
  529.      gestaltFullExtFSDispatching = 0;      {routines _HFSDispatch avail.}
  530.      gestaltHasFSSpecCalls       = 1;      {FSSpec functions available}
  531.      gestaltHasFileSystemManager = 2;      *S01
  532.      gestalt???                  = 3;      {unknown, System 7.5}
  533.      gestalt???                  = 4;      {unknown, System 7.5}
  534.      gestalt???                  = 6;      {unknown, System 7.5}
  535.  
  536.      NOTES:
  537.      File System Manager (version 1.0a3 according to the INIT resource
  538.      name) is installed by the 720K Floppy Disk Formatter, part of the
  539.      Hardware System Update 2.0 and later.
  540.  
  541.      See 'Reports' chapter (QuickTime section) for more information.
  542. fxfr (System [7.0])
  543.      gestaltFXfrMgrAttr
  544.      Returns information about the File Transfer Manager.
  545.  
  546.      gestaltFXfrMgrAttr        = 'fxfr'; {File Transfer Mgr attributes}
  547.      gestaltFXfrMgrPresent     = 0; {File Transfer Mgr present}
  548.      gestaltFXfrMgrMultiFile   = 1; {supports FTSend and FTReceive} *AS02
  549.      gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString} *AS02/S02
  550. gval (GestaltValue Glue code)
  551.      gestaltValueAddr?
  552.      Returns a pointer to a table with the selectors and values managed
  553.      by the GestaltValue code. (Marco Piovanelli)
  554.  
  555.      gestaltValueAddr? = 'gval';
  556.  
  557.      WARNING:
  558.      Although this information isn't officially confirmed, it is probably
  559.      correct.
  560.  
  561.      NOTE:
  562.      See 'Reports' chapter (GestaltValue section) for more information.
  563. hdwr (System [6.0.4])
  564.      gestaltHardwareAttr
  565.      Returns information about the hardware configuration of the machine.
  566.  
  567.      gestaltHardwareAttr    = 'hdwr'; {hardware attributes}
  568.      gestaltHasVIA1         =  0;     {VIA 1}
  569.      gestaltHasVIA2         =  1;     {VIA 2}
  570.      gestaltHasRBV          =  2;     {RBV}                           *M01
  571.      gestaltHasASC          =  3;     {ASC}
  572.      gestaltHasSCC          =  4;     {SCC}
  573.      gestaltHasOSS          =  5;     {OSS}                           *M01
  574.      gestaltHasSCSIDMA      =  6;     {53C80 SCSI DMA}                *M01
  575.      gestaltHasSCSI         =  7;     {SCSI}
  576.      gestaltHasSWIMIOP      =  8;     {SWIM IOP}                      *M01
  577.      gestaltHasSCCIOP       =  9;     {SCC IOP}                       *M01
  578.      gestaltHasFitch        = 10;     {Fitch memory Controller}       *M02
  579.      gestaltHasIWM          = 11;     {IWM}                           *M01
  580.      gestaltHasPWM          = 12;     {PWM disk speed buffer}         *M02
  581.      gestaltHasRAMSndBuff   = 13;     {RAM-based sound buffer}        *M02
  582.      gestaltHasVideoDAConv  = 14;     {Video D/A Converter}           *M02
  583.      gestaltHasPGC          = 15;     {PGC (parity control)}          *M02
  584.      gestalt???             = 16;     {unknown, found in Speech Mgr ext}
  585.      gestalt???             = 17;     {unknown, found in Speech Mgr ext}
  586.      gestalt???             = 18;     {unknown, found in Speech Mgr ext}
  587.      gestaltHasSoftPowerOff = 19;     {Software PowerOff (since 7.0?)}*S01
  588.      gestaltHasSonic        = 20;     {Sonic}                         *M01
  589.      gestaltHasSCSI961      = 21;     {Int. 53C96 SCSI}               *AT01
  590.      gestaltHasSCSI962      = 22;     {Ext. 53C96 SCSI}               *AT01
  591.      gestaltHasDAFBVideo    = 23;     {DAFB Video}                    *M01
  592.      gestaltHasUniversalROM = 24;     {Universal ROM}                 *AT04
  593.      gestaltHas???          = 27;     {set on PowerMac and C660AV}
  594.      gestaltHas???          = 30;     {set on C660AV, DSP?}
  595.  
  596.      NOTE:
  597.      See for more information the TN "M.OV.GestaltSysenvirons" (OV 16).
  598. help (System [7.0])
  599.      gestaltHelpMgrAttr
  600.      Returns information about the Help Manager.
  601.  
  602.      gestaltHelpMgrAttr       = 'help'; {Help Mgr attributes}
  603.      gestaltHelpMgrPresent    =  0;     {Help Mgr present}
  604.      gestaltHelpMgrExtensions =  1;     {Help Mgr extensions installed}
  605.                                         *AS03
  606.      gestalt???               = 31;     {unknown, System 7.5}
  607. icon (System [7.0])
  608.      gestaltIconUtilities
  609.      Returns information about the Icon Utilities routines?
  610.  
  611.      gestaltIconUtilities        = 'icon'; {Icon Utils attributes}
  612.      gestaltIconUtilitiesPresent = 0;
  613. intd (Powerbook Duo Enabler [1.0])
  614.      (System Enabler 111 [1.0])
  615.      (System Enabler 121 [1.0])
  616.      (System Enabler 131 [1.0])
  617.      (System Enabler 201 [1.0])
  618.      gestaltInternalDiskAttr?
  619.      Returns information about the internal harddisk of portable
  620.      computers?
  621.  
  622.      gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
  623.      gestaltHasInternalDisk?  =  0;     {TRUE if machine has internal HD}
  624.      gestaltDiskSpinning?     =  1;     {TRUE if internal HD is spon up}
  625.      gestalt???               = 24;     {unknown, set on PB180, PB210,}
  626.                                         {PB540}
  627.  
  628.      NOTES:
  629.      This information is from a reliable source. However, is it not
  630.      officially confirmed by Apple and there are no constants defined.
  631.  
  632.      On a PB Duo 210 (PowerBook Duo Enabler) I haven't seen bit 1 set, even
  633.      when the disk is spinning. (Rene Ros)
  634. kbd  (System [6.0.4])
  635.      gestaltKeyboardType
  636.      Returns a value that indicates the type of keyboard on which the last
  637.      keystroke was seen.
  638.  
  639.      gestaltKeyboardType      = 'kbd '; {keyboard type}
  640.      gestaltMacKbd            =  1;     {Macintosh Keyboard}
  641.      gestaltMacAndPad         =  2;     {Macintosh Keyboard with Pad}
  642.      gestaltMacPlusKbd        =  3;     {Macintosh Plus Keyboard}
  643.      gestaltExtADBKbd         =  4;     {Extended ADB Keyboard}
  644.      gestaltStdADBKbd         =  5;     {Standard ADB Keyboard}
  645.      gestaltPrtblADBKbd       =  6;     {Portable ADB Keyboard}
  646.      gestaltPrtblISOKbd       =  7;     {Portable ISO ADB Keyboard}
  647.      gestaltStdISOADBKbd      =  8;     {Standard ISO ADB Keyboard}
  648.      gestaltExtISOADBKbd      =  9;     {Extended ISO ADB Keyboard}
  649.      gestaltADBKbdII          = 10;     {ADB Keyboard II}
  650.      gestaltADBISOKbdII       = 11;     {ISO ADB Keyboard II}
  651.      gestaltPwrBookADBKbd     = 12;     {PowerBook Keyboard}          *AT01
  652.      gestaltPwrBookISOADBKbd  = 13;     {PowerBook Keyboard (ISO)}    *AT01
  653.  
  654.      From the OV Gestalt & SysEnvirons Technical Note:
  655.      gestaltAppleAdjustKeypad = 14;     {Apple Adjustable Keypad}     *AT01
  656.      gestaltAppleAdjustADBKbd = 16;     {Apple Adjustable Keyboard}   *AT01
  657.      gestaltAppleAdjustISOKbd = 17;     {Apple Adjustable ISO Keyboard}
  658.                                         *AT01
  659.      gestaltJapanAdjustADBKbd = 18;     {Japan Adjustable Keyboard}   *AT01
  660.  
  661.      From the GestaltEqu.h file on E.T.O. #14:
  662.      gestaltAppleAdjustKeypad = 14;
  663.      gestaltAppleAdjustADBKbd = 15;
  664.      gestaltAppleAdjustISOKbd = 16;
  665.  
  666.      gestalt???               = ??;     {new AppleDesign extended kbd.}
  667.  
  668.  
  669.      Combinations of System Global KbdType and gestaltKeyboardType values
  670.      ======================================================================
  671.      KbdType    gestaltKeyboardType          KbdType    gestaltKeyboardType
  672.      (hex.)     (decimal)                    (hex.)     (decimal)
  673.      ----------------------------------------------------------------------
  674.        $03          1                          $0F         18
  675.        $13          2                          $12         19
  676.        $0B          3                          $13         20
  677.        $02          4                          $14         21
  678.        $01          5                          $15         22
  679.        $06          6                          $16         23
  680.        $07          7                          $17         24
  681.        $04          8                          $18         25
  682.        $05          9                          $19         26
  683.        $08         10                          $1A         27
  684.        $09         11                          $1B         28
  685.        $0C         12                          $1C         29
  686.        $0D         13                          $1D         30
  687.        $0E         14                          $1E         31
  688.        $10         15                          $1F         32
  689.        $11         16                          $20         33
  690.        $0A         17
  691.      ======================================================================
  692.      (Source: the PTCH 5 resource of the Hardware System Update 2.0
  693.               extension.)
  694.  
  695.      NOTES:
  696.      The Apple Adjustable Keyboard doesn't has its own gestalt keyboard
  697.      type defined with the currently available System Software. It changes
  698.      a low memory global but this doesn't change the Gestalt response.
  699.      This problem is corrected by the Hardware System Update 2.0 and later.
  700.  
  701.      Since this selector returns the type of the keyboard last touched
  702.      and because there can be more than one keyboard this selector is
  703.      considered by MacDTS to be obsolete. You should use GetADBInfo
  704.      instead. *AD07/AT01
  705. lram (System [6.0.4])
  706.      (RAM Doubler [1.0] by Connectix Corporation)
  707.      gestaltLogicalRAMSize
  708.      Returns the amount of logical memory available in bytes.
  709.  
  710.      gestaltLogicalRAMSize = 'lram'; {logical RAM size}
  711. lmem (System [6.0.4])
  712.      gestaltLowMemorySize
  713.      Returns the amount of the low-memory area in bytes.
  714.  
  715.      gestaltLowMemorySize = 'lmem'; {low-memory area size}
  716. mach (System [6.0.4]) INF
  717.      gestaltMachineType
  718.      Returns one of the following values, indicating the type of
  719.      machine.
  720.  
  721.      RELEASED
  722.      gestaltMachineType      = 'mach'; {machine type}
  723.      gestaltClassic          =   1;    {Macintosh 128K}
  724.      gestaltMacXL            =   2;    {Macintosh XL}
  725.      gestaltMac512KE         =   3;    {Macintosh 512KE}
  726.      gestaltMacPlus          =   4;    {Macintosh Plus}
  727.      gestaltMacSE            =   5;    {Macintosh SE}
  728.      gestaltMacII            =   6;    {Macintosh II}
  729.      gestaltMacIIx           =   7;    {Macintosh IIx}
  730.      gestaltMacIIcx          =   8;    {Macintosh IIcx}
  731.      gestaltMacSE030         =   9;    {Macintosh SE/30}
  732.      gestaltPortable         =  10;    {Macintosh Portable}
  733.      gestaltMacIIci          =  11;    {Macintosh IIci}
  734.      gestaltMacIIfx          =  12;    {Macintosh IIfx}
  735.      gestaltMacClassic       =  13;    {Macintosh Classic}
  736.      gestaltMacIIsi          =  14;    {Macintosh IIsi}
  737.      gestaltMacLC            =  15;    {Macintosh LC}
  738.      gestaltQuadra900        =  20;    {Macintosh Quadra 900}         *AT01
  739.      gestaltPowerBook170     =  21;    {Macintosh PowerBook 170}      *AT01
  740.      gestaltQuadra700        =  22;    {Macintosh Quadra 700}         *AT01
  741.      gestaltClassicII        =  23;    {Macintosh Classic II}         *AT01
  742.      gestaltPowerBook100     =  24;    {Macintosh PowerBook 100}      *AT01
  743.      gestaltPowerBook140     =  25;    {Macintosh PowerBook 140}      *AT01
  744.      gestaltQuadra950        =  26;    {Macintosh Quadra 950}         *AT01
  745.      gestaltMacLCIII         =  27;    {Macintosh LC III}
  746.      gestaltPowerBook210     =  29;    {Macintosh PowerBook 210}
  747.      gestaltMacCentris650    =  30;    {Macintosh Centris 650}
  748.      gestaltPowerBook230     =  32;    {Macintosh PowerBook 230}
  749.      gestaltPowerBook180     =  33;    {Macintosh PowerBook 180}
  750.      gestaltPowerBook160     =  34;    {Macintosh PowerBook 160}
  751.      gestaltMacQuadra800     =  35;    {Macintosh Quadra 800}
  752.      gestaltMacQuadra650     =  36;    {Macintosh Quadra 650}         *AT01
  753.      gestaltMacLCII          =  37;    {Macintosh LC II}
  754.      gestaltPowerBookDuo250  =  38;    {Macintosh PowerBook Duo 250}  *AT01
  755.      gestaltMacIIvi          =  44;    {Macintosh IIvi}
  756.      gestaltPerforma600      =  45;    {Macintosh Performa 600}
  757.      gestaltMacIIvx          =  48;    {Macintosh IIvx}
  758.      gestaltMacColorClassic  =  49;    {Macintosh Color Classic}
  759.      gestaltPowerBook165c    =  50;    {Macintosh PowerBook 165c}
  760.      gestaltMacCentris610    =  52;    {Macintosh Centris 610}
  761.      gestaltMacQuadra610     =  53;    {Macintosh Quadra 610}         *AT01
  762.      gestaltPowerBook145     =  54;    {Macintosh PowerBook 145 & 145b}
  763.                                        *AT01
  764.      gestaltMacLC520         =  56;    {Macintosh LC 520}             *AT01
  765.      gestaltMacCentris660AV  =  60;    {Macintosh Centris 660AV}      *AT01
  766.      gestaltPerforma460      =  62;    {Macintosh Performa 460}
  767.      gestaltPowerMac8100/80? =  65;    {Power Macintosh 8100/80}
  768.      gestaltPowerBook180c    =  71;    {Macintosh PowerBook 180c}     *AT01
  769.      gestaltPowerBook5xx?    =  72;    {Macintosh PowerBook 520 & 540?}
  770.      gestaltPowerMac6100/60? =  75;    {Power Macintosh 6100/60}
  771.      gestaltPowerBookDuo270c =  77;    {Macintosh PowerBook Duo 270c} *AT01
  772.      gestaltMacQuadra840AV   =  78;    {Macintosh Quadra 840AV}       *AT01
  773.      gestaltMacLC550         =  80;    {Macintosh LC 550}             *AT01
  774.      gestaltPowerBook165     =  84;    {Macintosh PowerBook 165}      *AT01
  775.      gestaltMacTV            =  88;    {Macintosh TV}
  776.      gestaltMacLC475         =  89;    {Macintosh LC 475}             *AT01
  777.      gestaltMacLC575         =  92;    {Macintosh LC 575}             *AT01
  778.      gestaltMacQuadra605     =  94;    {Macintosh Quadra 605}         *AT01
  779.      gestaltPowerMac7100/66? = 112;    {Power Macintosh 7100/66}
  780.      gestaltPowerMac700?     = 116;    {Quadra 700 upgrade card?}
  781.      gestaltPowerMac900?     = 117;    {Quadra 900 upgrade card?}
  782.      gestaltPowerMac950?     = 118;    {Quadra 950 upgrade card?}
  783.      gestaltPowerMacC610?    = 119;    {Centris 610 upgrade card?}
  784.      gestaltPowerMacC650?    = 120;    {Centris 650 upgrade card?}
  785.      gestaltPowerMacQ610?    = 121;    {Quadra 610 upgrade card?}
  786.      gestaltPowerMacQ650?    = 122;    {Quadra 650 upgrade card?}
  787.      gestaltPowerMac800?     = 123;    {Quadra 800 upgrade card?}
  788.  
  789.      Exceptions with systems prior to System 7.1:
  790.      gestaltMacLCII          =  19;    {Macintosh LC & LC II}
  791.                                        {LC has MC68020,LC II has MC68030}
  792.      gestaltPowerBook145     =  25;    {Macintosh PowerBook 140 & 145}
  793.                                        {processor speed is only}
  794.                                        {difference use GetCPUSpeed from}
  795.                                        {Power Mgr?}
  796.  
  797.      Released unknown
  798.      gestaltPowerBookDuo280? = ???;    {Macintosh PowerBook Duo 280}
  799.      gestaltPowerBookDuo280c?= ???;    {Macintosh PowerBook Duo 280c}
  800.      And all other released macs and not listed here! I can't keep up with
  801.      the new releases... Can you?
  802.  
  803.      Relabeled
  804.      Color Classic II        = gestaltMacColorClassic? (sold in Japan?)
  805.      Performa 200            = gestaltClassicII
  806.      Performa 400            = gestaltMacLCII
  807.      Performa 405            = gestaltMacLCII
  808.      Performa 410            = gestaltMacLCII
  809.      Performa 430            = gestaltMacLCII
  810.      Performa 450            = gestaltMacLCIII
  811.      Performa 466            = gestaltMacLCIII
  812.      Performa 467            = gestaltMacLCIII
  813.      Performa 475            = gestaltMacLC475
  814.      Performa 476            = gestaltMacLC475
  815.      Performa 550            = gestaltMacLC550
  816.      Performa 575            = gestaltMacLC550?
  817.      Performa 600            = gestaltMacIIvx
  818.      Performa 600CD          = gestaltMacIIvx
  819.      PowerMac 6100/60AV      = gestaltPowerMac6100/60?
  820.      PowerMac 7100/66AV      = gestaltPowerMac7100/66?
  821.      PowerMac 8100/80AV      = gestaltPowerMac8100/80?
  822.      Quadra 660AV            = gestaltMacCentris660AV
  823.      Workgroup Server 60     = gestaltMacCentris610
  824.      Workgroup Server 80     = gestaltMacQuadra800
  825.      Workgroup Server 95     = gestaltQuadra950
  826.      Workgroup Server 95+    = gestaltQuadra950
  827.  
  828.  
  829.      UNRELEASED (RUMOURED / PRERELEASES)
  830.      gestaltPowerMac8100/60? =  64;    {Power Macintosh 8100/60}
  831.      gestaltPowerMac8100/100?=  66;    {Power Macintosh 8100/100}
  832.      gestaltPowerMac6100/66? = 100;    {Power Macintosh 6100/66}
  833.      gestaltPowerMac6100/80? = 101;    {Power Macintosh 6100/80}
  834.      gestaltPowerMac7100/60? = 111;    {Power Macintosh 7100/60}
  835.      gestaltPowerMac7100/80? = 113;    {Power Macintosh 7100/80}
  836.  
  837.      Unreleased unknown
  838.      gestaltPomona???        = ???;    {unknown, codename Pomona?}
  839.      Pomona is probably the codename of a new line of home and business
  840.      machines scheduled for early 1995, with three models:
  841.        gestalt???              = ???
  842.        gestalt???              = ???
  843.        gestalt???              = ???
  844.      gestalt???              =  43;    {unknown, pre-rel. Tempest/Cyclone}
  845.      gestaltPowerBook603?    = ???;    {unknown, PowerPC 603 PB Duo}
  846.      gestaltPowerBook603c?   = ???;    {unknown, PowerPC 603 PB Duo, color}
  847.      gestaltPowerBookDuo290? = ???;    {PowerBook Duo with PPC 603?}
  848.      gestaltPowerBookDuo290c?= ???;    {PowerBook Duo color with PPC 603?}
  849.      gestaltPowerBookLC?     = ???;    {Macintosh PowerBook LC?}
  850.      gestaltPowerMac9100/?? ?= ???;    {Power Macintosh 9100/?? ?}
  851.      gestaltTNTPowerMacs?    = ???;    {TNT PowerMacs}
  852.  
  853.      Relabeled
  854.      Performa 560            = gestaltMacLC550?
  855.      Performa 576            = gestaltMacLC550?
  856.      Performa 578            = gestaltMacLC550?
  857.      PowerMac WGS 6150       = gestaltPowerMac6100/60?
  858.      PowerMac WGS 8150       = gestaltPowerMac8100/80?
  859.      PowerMac WGS 9150       = gestaltPowerMac9100/?? ?
  860.  
  861.      NOTES:
  862.      I don't know what constant names will be used for the PowerMacs. The
  863.      slash is not a valid character but I leave it in for the moment.
  864.      (Rene Ros)
  865.  
  866.      The Power Macintosh computers also set the three low bits of a 32-bit
  867.      register at address $5FFF FFFC to a machine identification code.
  868.  
  869.      Power Macintosh register identification codes
  870.      ======================================================================
  871.      Machine                     Register bits
  872.      ----------------------------------------------------------------------
  873.      gestaltPowerMac6100?        000
  874.      gestaltPowerMac7100?        010
  875.      gestaltPowerMac8100?        011
  876.      ----------------------------------------------------------------------
  877.  
  878.      The Performa 600 was originally planned to ship as Macintosh IIvm
  879.      but the name was changed because users thought 'vm' meant 'Virtual
  880.      Memory'. MOST system enablers (i.e. 001, 040, 065 & 201) still
  881.      contain this original name.
  882.  
  883.      The Developer Notes (available on ftp.apple.com and on the Developer
  884.      CD-ROM Series, amongst others) about Macintosh models provide in
  885.      several cases wrong or incomplete information regarding the machine
  886.      type returned by the Gestalt Manager.
  887.  
  888.      You can use the returned value as an index with GetIndString
  889.      to get the machine's name. The STR# resource ID is:
  890.      kMachineNameStrID       = -16395;
  891.  
  892.      On Macintosh Performas, the Machine Name STR# resource will always
  893.      return the string "Macintosh" (not "Macintosh Performa 450" or
  894.      "Performa 450").  On all other Macintoshes, the string will return
  895.      the correct name. (Mark Dawson)
  896.  
  897.      All system enablers have a STR# resource -16395 (kMachineNameStrID)
  898.      included to replace the one in the System file. In most cases this
  899.      resource lists the same Macintosh names as the original one in
  900.      System 7.1 and adds the names of the machines the enabler is intended
  901.      for. But some only list the machines the enabler is used with.
  902.      Therefore, if you want to display the name of a machine which isn't
  903.      of the current machine type you can't rely on this resource anymore.
  904.      Using the archive mail server you can obtain a ResEdit file with the
  905.      complete machine name string resource. The command to use is
  906.          archive get src/machname-str.sit.hqx
  907.      I will keep this one up-to-date along with the changes in this 'mach'
  908.      entry. (Rene Ros)
  909.  
  910.      (Sources of relabled and unreleased machines:
  911.       MacFacts Two by J.D.S. Babcock <jdsb@ee.duke.edu>;
  912.       Duo FAQ by Nicholas C. De Mello <nick@pitt.edu>)
  913. malr (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  914.      gestaltSMPMailerVersion
  915.      Returns the SMP Mailer version as INTEGER.
  916.  
  917.      gestaltSMPMailerVersion = 'malr'; {SMP Mailer version}
  918. micn (System [6.0.4]) INF
  919.      gestaltMachineIcon
  920.      Returns an icon family resource ID for the current type of
  921.      Macintosh.
  922.  
  923.      gestaltMachineIcon = 'micn'; {machine ICON/cicn res ID}
  924.  
  925.      NOTE:
  926.      The icon resource ID returned is based on the gestaltMachineType
  927.      response which is used as an index into a table. This table of
  928.      resource IDs differs for most System Software versions (and
  929.      enablers). If you really want to know the icon resource ID of a
  930.      machine which is not the current machine you have the following
  931.      options:
  932.      - Write a GDEF to replace the 'mach' selector, let this GDEF return
  933.        the original gestaltMachineType unless a certain selector exists.
  934.        Create this selector with the GestaltValue code and make it loop
  935.        from 1 to the number of items in the STR# kMachineNameStrID
  936.        resource, let the custom GDEF return this as the machine type so
  937.        the gestaltMachineIcon selector will use this to look up the icon
  938.        resource ID. Then remove the GestaltValue selector and restore the
  939.        original gestaltMachineType selector.
  940.      - Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
  941.        GDEF a few bytes further (and thus skipping the gestalt call using
  942.        the gestaltMachineType selector), emulate a genuine call to Gestalt
  943.        by setting the A0 (response, the machineType you want) and
  944.        D0 (result) registers correct.
  945.      - Determine the start of the table, which is located in memory before
  946.        the entrypoint of the gestaltMachineIcon GDEF code, and calculate
  947.        the offset to the icon resource ID you need. If you want code which
  948.        does this, you can contact me (Rene Ros) an I will sent you some
  949.        Pascal source code.
  950.      (David Greenspon, Michael Hecht and Rene Ros)
  951. misc (System [6.0.5])
  952.      gestaltMiscAttr
  953.      Returns information about miscellaneous pieces of software or
  954.      hardware.
  955.  
  956.      gestaltMiscAttr          = 'misc'; {miscellaneous attributes}
  957.      gestaltScrollingThrottle = 0;
  958.      gestaltBootGlobals       = 1;      {Boot Globals} *M02
  959.      gestaltSquareMenuBar     = 2;
  960. mixd (System? [7.1.2?])
  961.      gestaltMixedModeAttr
  962.      Returns information about the Mixed Mode Manager.
  963.  
  964.      gestaltMixedModeAttr = 'mixd'; {Mixed Mode Mgr attributes}
  965.      gestaltPowerPCAware  = 0;      {True if MMMgr Supports PowerPC}
  966. mmu  (System [6.0.4])
  967.      gestaltMMUType
  968.      Returns a value that indicates the type of MMU currently installed,
  969.      if any.
  970.  
  971.      gestaltMMUType  = 'mmu ';  {MMU Type}
  972.      gestaltNoMMU    = 0;       {no MMU}
  973.      gestaltAMU      = 1;       {AMU}
  974.      gestalt68851    = 2;       {68851 MMU}
  975.      gestalt68030MMU = 3;       {built-in 68030 MMU}
  976.      gestalt68040MMU = 4;       {68040/68LC040 built-in}           *S01
  977.      gestaltEMMU1    = 5;       {Emulated MMU type 1, PowerPC MMU} *AS05
  978. nlup (System [7.0])
  979.      gestaltStdNBPAttr
  980.      Returns information about the call StandardNBP.
  981.  
  982.      gestaltStdNBPAttr    = 'nlup'; {Standard NBP attributes}
  983.      gestaltStdNBPPresent = 0;
  984.      gestalt???           = 1;      {unknown, System 7.5}
  985. nmgr (System [6.0.5])
  986.      gestaltNotificationMgrAttr
  987.      Returns information about the Notification Manager.
  988.  
  989.      gestaltNotificationMgrAttr = 'nmgr'; {Notification Mgr attributes}
  990.      gestaltNotificationPresent = 0;
  991. nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
  992.      gestaltNuBusSlotCount
  993.      Returns count of NuBus slots.
  994.  
  995.      gestaltNuBusSlotCount = 'nubs'; {NuBus slot count}
  996. ocet (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and System 7.5)
  997.      gestaltOCEToolboxVersion
  998.      Returns the versions of the S&F Server and the OCE Toolbox as BCD.
  999.  
  1000.      gestaltOCEToolboxVersion = 'ocet'; {OCE Toolbox version}
  1001.      gestaltOCETB             = $0100;  {current OCE Toolbox version 1.0}
  1002.      gestaltSFServer          = $0100;  {current S&F Server version 1.0}
  1003.  
  1004.      NOTE:
  1005.      The high order word will represent the S&F Server version number, and
  1006.      the low order the OCE Toolbox version number both as BCD.
  1007.      These will be zero until the component is up and running.
  1008. oceu (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and System 7.5)
  1009.      gestaltOCEToolboxAttr
  1010.      Returns information about the Open Colloboration Environment Toolbox.
  1011.  
  1012.      gestaltOCEToolboxAttr       = 'oceu'; {OCE Toolbox attributes}
  1013.      gestaltOCETBPresent         = $1;     {OCE toolbox is present,}
  1014.                                            {not running}
  1015.      gestaltOCETBAvailable       = $2;     {OCE toolbox is running and}
  1016.                                            {available}
  1017.      gestaltOCESFServerAvailable = $4;     {S&F Server is running and}
  1018.                                            {available}
  1019.  
  1020.      NOTE:
  1021.      Any (future) remaining OCE attributes may not be established
  1022.      correctly until the attribute gestaltOCETBAvailable is set.
  1023. os   (System [6.0.4, 7.0 and later])
  1024.      (Process Manager INIT ext [???], part of System 7.1 Pro and
  1025.                                       System 7.5 ?)
  1026.      gestaltOSAttr
  1027.      Returns general information about the Operating System.
  1028.  
  1029.      gestaltOSAttr               = 'os  '; {O/S attributes}
  1030.      gestaltSysZoneGrowable      =  0;
  1031.      gestaltLaunchCanReturn      =  1;
  1032.      gestaltLaunchFullFileSpec   =  2;
  1033.      gestaltLaunchControl        =  3;
  1034.      gestaltTempMemSupport       =  4;
  1035.      gestaltRealTempMemory       =  5;
  1036.      gestaltTempMemTracked       =  6;
  1037.      gestaltIPCSupport           =  7;
  1038.      gestaltSysDebuggerSupport   =  8;
  1039.      gestaltSkiaGlobalsSwitched  =  9;     *AS05
  1040.      gestaltBgndMouseDownSupport = 10;     *AS04
  1041.      gestalt???                  = 11;     {set on PowerPC}
  1042.      gestalt???                  = 13;     {unknown, System 7.5}
  1043.      gestalt???                  = 14;     {unknown, System 7.5}
  1044.  
  1045.      NOTES:
  1046.      See the Process Manager chapter in IM Processes for more information
  1047.      about the launch control features. And the Memory Manager chapter in
  1048.      IM Memory about the memory features.
  1049.  
  1050.      The header file which lists the gestaltSkiaGlobalsSwitched bit says
  1051.      this:
  1052.      /*gestaltSkiaGlobalsSwitched is #9. I don't know why it is not here*/
  1053.      
  1054.      "Skia" is the code name for QuickDraw GX (MacsBug uses it for trap
  1055.      $A832, which is the main QuickDraw GX trap).
  1056.      (Lawrence D'Oliveiro, Anonymous)
  1057. ostt (System [6.0.8?])
  1058.      gestaltOSTable
  1059.      Returns the base address of the Operating System trap table.
  1060.  
  1061.      gestaltOSTable = 'ostt'; {O/S trap table base}
  1062. osyv (sysvINIT ext [???] by T. Tanaka, Apple Computer Japan Inc.) INF
  1063.      gestaltOldSystemVersion?
  1064.      Returns the version of the system file as BCD which was returned
  1065.      before sysvINIT replaced the gestalt definition with a corrected one.
  1066.  
  1067.      gestaltOldSystemVersion? = 'osyv';
  1068.  
  1069.      NOTE:
  1070.      Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
  1071.      available on Developer CD-ROM Series) replaces the standard 'sysv'
  1072.      Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
  1073.      installs the 'osyv' selector which uses the replaced gestalt
  1074.      definition. *M03
  1075. pcxg (System? [???]) *AS04/AS05
  1076.      gestaltPCXAttr
  1077.      Returns information about PC Exchange.
  1078.  
  1079.      gestaltPCXAttr            = 'pcxg'; {PC Exchange attributes}
  1080.      gestaltPCXHas8and16BitFAT = 0;      {PC Exchange supports both 8 and}
  1081.                                          {16 bit FATs}
  1082.      gestaltPCXHasProDOS       = 1;      {PC Exchange supports ProDOS}
  1083. pgsz (System [6.0.4])
  1084.      (RAM Doubler [1.0] by Connectix Corporation)
  1085.      gestaltLogicalPageSize
  1086.      Returns the logical page size in bytes.
  1087.  
  1088.      gestaltLogicalPageSize = 'pgsz'; {logical page size}
  1089.  
  1090.      NOTE:
  1091.      The value is unknown on 68000 machines, Gestalt will return an error.
  1092. pop! (System [7.0])
  1093.      gestaltPopupAttr
  1094.      Returns information about the pop-up control definition.
  1095.      
  1096.      gestaltPopupAttr    = 'pop!'; {pop-up CDEF attributes}
  1097.      gestaltPopupPresent = 0;      {pop-up CDEF available}
  1098. powr (System [6.0.4])
  1099.      gestaltPowerMgrAttr
  1100.      Returns information about the Power Manager, if present.
  1101.  
  1102.      gestaltPowerMgrAttr       = 'powr'; {Power Mgr attributes}
  1103.      gestaltPMgrExists         = 0;
  1104.      gestaltPMgrCPUIdle        = 1;
  1105.      gestaltPMgrSCC            = 2;
  1106.      gestaltPMgrSound          = 3;
  1107.      gestaltPMgrDispatchExists = 4;
  1108. ppc  (System [7.0])
  1109.      gestaltPPCToolboxAttr
  1110.      Returns information about the capabilities of the PPC Toolbox.
  1111.  
  1112.      gestaltPPCToolboxAttr      = 'ppc ';  {PPC Toolbox attributes}
  1113.      gestaltPPCToolboxPresent   = $0x0000; {Requires PPCInit to be called}
  1114.      gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net requests}
  1115.      gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net requests}
  1116.      gestaltPPCSupportsRealTime = $0x1000; {Supports real-time delivery}
  1117.      
  1118.      NOTE:
  1119.      The first thing that is confusing is that, unlike other selectors
  1120.      returning attributes, the responses are not bit values, but bit masks.
  1121.      This means you simply AND the value with the response to test the bit.
  1122.      The second thing that is confusing is how to interpret
  1123.           gestaltPPCToolboxPresent = $0x0000.
  1124.      What this means is that if the PPC toolbox is present, but has not
  1125.      been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
  1126.      returns $0x0000. In reality, PPCInit gets called by the Process
  1127.      Manager before any applications get launched, so no applications will
  1128.      actually see this response. (Dave Radcliffe)
  1129. proc (System [6.0.4])
  1130.      gestaltProcessorType
  1131.      Returns a value that indicates the type of processor that is
  1132.      currently running (or emulated on Power Macs?).
  1133.  
  1134.      gestaltProcessorType = 'proc'; {processor type}
  1135.      gestalt68000         = 1;      {MC68000}
  1136.      gestalt68010         = 2;      {MC68010}
  1137.      gestalt68020         = 3;      {MC68020}
  1138.      gestalt68030         = 4;      {MC68030}
  1139.      gestalt68040         = 5;      {MC68040} *S01
  1140.  
  1141.      NOTE:
  1142.      The 68LC040 responds as type gestalt68040 but doesn't has a FPU. The
  1143.      user can swap out the 68LC040 and put in a real 68040 with FPU, so
  1144.      just checking the machineType or the processorType isn't enough.
  1145.      (Dave Radcliffe)
  1146. prpv (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  1147.      gestaltSDPPromptVersion
  1148.      Returns the SDP Prompt version as INTEGER.
  1149.  
  1150.      gestaltSDPPromptVersion = 'prpv'; {SDP Prompt version}
  1151. prty (System [6.0.4])
  1152.      gestaltParityAttr
  1153.      Returns information about the parity-checking abilities of the
  1154.      machine.
  1155.  
  1156.      gestaltParityAttr          = 'prty'; {parity attributes}
  1157.      gestaltHasParityCapability = 0;
  1158.      gestaltParityEnabled       = 1;
  1159. qd   (System [6.0.4])
  1160.      gestaltQuickDrawVersion
  1161.      Returns the version of QuickDraw currently present as a 2-byte value.
  1162.  
  1163.      gestaltQuickDrawVersion = 'qd  '; {QuickDraw version}
  1164.      gestaltOriginalQD       = $000;
  1165.      gestaltOriginalQD1      = $001;
  1166.      gestalt8BitQD           = $100;
  1167.      gestalt32BitQD          = $200;
  1168.      gestalt32BitQD11        = $210;
  1169.      gestalt32BitQD12        = $220;
  1170.      gestalt32BitQD13        = $230;
  1171.      gestalt32BitQD135?      = $235;   {with System 7.1.2, ROM = 3072K?}
  1172.  
  1173.      Possible Combinations of ROM Versions and System Software Versions
  1174.      ======================================================================
  1175.      ROM Class             System Version         Gestalt Value
  1176.      ----------------------------------------------------------------------
  1177.      Black-and-white class <  7.0                 gestaltOriginalQD
  1178.      (ROM < 256K)          >= 7.0                 gestaltOriginalQD and
  1179.                                               gestaltSystemVersion >= $0700
  1180.  
  1181.      Color QD class        <  7.0, no INITs       gestalt8BitQD
  1182.      (ROM = 256K)          6.0.3/6.0.4 and        gestalt32BitQD
  1183.                            32-Bit QD INIT 1.0
  1184.                            6.0.5-6.0.8 and        gestalt32BitQD12
  1185.                            32-Bit QD INIT 1.2
  1186.                            >= 7.0                 gestalt32BitQD13
  1187.  
  1188.      ci class              6.0.4                  gestalt32BitQD + 1
  1189.      (ROM > 256K)          6.0.5-6.0.8            gestalt32BitQD12
  1190.                            >= 7.0                 gestalt32BitQD13
  1191.      ======================================================================
  1192.      (Source: Develop Issue 14, June 1993, p. 55)
  1193.  
  1194.      NOTE:
  1195.      gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
  1196.      $0x0201 as respone value and doesn't has a constant defined.
  1197. qdrw (System [7.0])
  1198.      gestaltQuickDrawFeaturesAttr
  1199.  
  1200.      gestaltQuickDrawFeaturesAttr = 'qdrw'; {QuickDraw attributes} *S01
  1201.      gestaltHasColor              = 0;      *S01
  1202.      gestaltHasDeepGWorlds        = 1;      *S01
  1203.      gestaltHasDirectPixMaps      = 2;      *S01
  1204.      gestaltHasGrayishTextOr      = 3;      *S01
  1205.      gestalt???                   = 4;      {unknown, System 7.5}
  1206.  
  1207.      NOTE:
  1208.      There is a bug in the 'qdrw' selector that causes it to report that
  1209.      Color QuickDraw is always present, even on machines that don't support
  1210.      it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
  1211.      Use SysEnvirons instead or test for the QD version ('qd  ') being
  1212.      8-bit QD or later.
  1213. ram  (System [6.0.4])
  1214.      (RAM Doubler [1.0] by Connectix Corporation)
  1215.      gestaltPhysicalRAMSize
  1216.      Returns the number of bytes of the physical RAM currently installed.
  1217.  
  1218.      gestaltPhysicalRAMSize = 'ram '; {physical RAM}
  1219. rbv  (System [6.0.4, discontinued?]) *AS04
  1220.      gestaltRBVAddr
  1221.      Returns the address of the RBV?
  1222.  
  1223.      gestaltRBVAddr = 'rbv '; {RBV address}
  1224. rom  (System [6.0.4]) INF
  1225.      gestaltROMSize
  1226.      Returns the size of the installed ROM in bytes.
  1227.  
  1228.      gestaltROMSize = 'rom '; {ROM size}
  1229. romv (System [6.0.4]) INF
  1230.      gestaltROMVersion
  1231.      Returns the version number of the installed ROM.
  1232.  
  1233.      gestaltROMVersion = romv'; {ROM version}
  1234. rsrc (System [should work since 7.0?])
  1235.      gestaltResourceMgrAttr
  1236.      Returns information about the Resource Manager.
  1237.  
  1238.      gestaltResourceMgrAttr = 'rsrc'; {Resource Mgr attributes}
  1239.      gestaltPartialRsrcs    = 0;
  1240.      gestalt???             = 1;      {unknown}
  1241.  
  1242.      NOTE:
  1243.      Under System 7, bit 0 that tells if you have partial resource support
  1244.      doesn't work right. The selector is undefined under System 7.0 and
  1245.      7.0.1 even though the partial resource calls are available. This has
  1246.      been acknowledged by Apple.
  1247.      (Michael Hecht, Quinn)
  1248. rtmr (System? [7.1.1?])
  1249.      gestaltRealtimeMgrAttr
  1250.      Returns information about the Realtime Manager.
  1251.  
  1252.      gestaltRealtimeMgrAttr    = 'rtmr'; {Realtime Mgr attributes}
  1253.      gestaltRealtimeMgrPresent = 0;      {Realtime Mgr is present}
  1254.  
  1255.      NOTE:
  1256.      If the RealTime Mgr is present this means the ARTA routines are
  1257.      available to determine if and how many DSPs are installed.
  1258.      (Zalman Stern)
  1259. sccr (System [6.0.4, discontinued]) *AS04
  1260.      gestaltSCCReadAddr
  1261.      Returns the address of SCC read ports.
  1262.  
  1263.      gestaltSCCReadAddr = 'sccr'; {SCC read ports address}
  1264. sccw (System [6.0.4, discontinued]) *AS04
  1265.      gestaltSCCWriteAddr
  1266.      Returns the address of SCC write ports.
  1267.  
  1268.      gestaltSCCWriteAddr = 'sccw'; {SCC write ports address}
  1269. scr# (System [6.0.4])
  1270.      gestaltScriptCount
  1271.      Returns the number of script systems currently active.
  1272.  
  1273.      gestaltScriptCount = 'scr#'; {number of active scripts}
  1274. scri (System [6.0.4])
  1275.      gestaltScriptMgrVersion
  1276.      Returns the version number of the Script Manager as BCD.
  1277.  
  1278.      gestaltScriptMgrVersion = 'scri'; {Script Mgr version}
  1279.  
  1280.      Version numbers for the Script Manager
  1281.      ======================================================================
  1282.      System Version       Script Mgr           Script Mgr          Version
  1283.                           (older ROMs)+        (newer ROMs)        format
  1284.      ----------------------------------------------------------------------
  1285.      6.0.3 and earlier    <= $20F              N.A.                binary
  1286.      6.0.4 Roman          $211                 $215                  "
  1287.      6.0.4 non-Roman      $212                 $216                  "
  1288.      6.0.5                $213                 $217 (=2.23)          "
  1289.  
  1290.      6.0.7                $230                 $231                BCD
  1291.      J-6.0.7.1            $230                 $231                 "
  1292.      6.0.8                $230                 $231                 "
  1293.      6.1 non-Roman        $240                 $241                 "
  1294.      7.0                  $700                 $700                 "
  1295.      7.0.1 Roman          $701                 $701                 "
  1296.      7.0.1 non-Roman      $701                 $701                 "
  1297.      7.1                  $710                 $710                 "
  1298.      
  1299.      + Plus,SE,II,IIx,IIcx,SE/30,Classic
  1300.      ======================================================================
  1301.      (Source: Inside Macintosh Text, p. 6-9)
  1302.  
  1303. sdvr (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  1304.      gestaltSDPStandardDirectoryVersion
  1305.      Returns the SDP Standard Directory version as INTEGER.
  1306.  
  1307.      gestaltSDPStandardDirectoryVersion = 'sdvr'; {SDP Standard Directory}
  1308.                                                   {version}
  1309.  
  1310.      WARNING:
  1311.      The same selector code is used by the Control Strip control panel.
  1312.      See the same entry with the Apple Additional Software section.
  1313. ser  (System [6.0.8?])
  1314.      gestaltSerialAttr
  1315.      Returns information about the serial hardware of the machine.
  1316.  
  1317.      gestaltSerialAttr  = 'ser '; {serial hardware attributes}
  1318.      gestaltGPIaToDCDa  = 0;
  1319.      gestaltGPIaToRTxCa = 1;
  1320.      gestaltGPIaToDCDb  = 2;
  1321. slot (System [6.0.4, 6.0.5, discontinued])
  1322.      gestaltSlotAttr
  1323.      Returns information about the Slot Manager.
  1324.  
  1325.      gestaltSlotAttr            = 'slot'; {Slot Mgr attributes}
  1326.      gestaltSlotMgrExists       = 0;
  1327.      gestaltNuBusPresent        = 1;
  1328.      gestaltSESlotPresent       = 2;
  1329.      gestaltSE30SlotPresent     = 3;
  1330.      gestaltPortableSlotPresent = 4;
  1331. slt1 (System [6.0.4, 6.0.5, discontinued])
  1332.      gestaltFirstSlotNumber
  1333.      Returns first slot number.
  1334.  
  1335.      gestaltFirstSlotNumber = 'slt1'; {First Slot number}
  1336. sltc (System [6.0.8?])
  1337.      gestaltNuBusConnectors
  1338.      Returns information about the NuBus slot connector locations. The
  1339.      value returned is a bitmap. If bits 9 to E are set, there are six
  1340.      slots present with locations 9 to E.
  1341.  
  1342.      gestaltNuBusConnectors = 'sltc'; {NuBus connector bitmap}
  1343.  
  1344.      NOTE:
  1345.      This selector does not return information about the Macintosh IIsi
  1346.      slot.
  1347. snd  (System [6.0.4])
  1348.      gestaltSoundAttr
  1349.      Returns information about the sound capabilities of the machine.
  1350.  
  1351.      gestaltSoundAttr           = 'snd '; {sound attributes}
  1352.      gestaltStereoCapability    =  0;     {can play stereo sounds}
  1353.      gestaltStereoMixing        =  1;     {mixes channels into single}
  1354.                                           {signal}
  1355.      gestaltSoundReserved       =  2;
  1356.      gestaltSoundIOMgrPresent   =  3;     {new sound input routines avail.}
  1357.      gestaltBuiltInSoundInput   =  4;     {built-in sound input device
  1358.                                           {available}
  1359.      gestaltHasSoundInputDevice =  5;     {some sound input device avail.}
  1360.      gestaltPlayAndRecord       =  6;     {built-in hardware can play and}
  1361.                                           {record simultaneously}
  1362.                                           *AS03/AS04
  1363.      gestalt16BitSoundIO        =  7;     {sound hardware can play and}
  1364.                                           {record 16-bit samples}     *AS04
  1365.      gestaltStereoInput         =  8;     {sound hardware can record}
  1366.                                           {stereo} *AS04
  1367.      gestaltLineLevelInput      =  9;     {sound input port requires}
  1368.                                           {line level} *AS04
  1369.      gestaltSndPlayDoubleBuffer = 10;     {play from disk available}  *AS04
  1370.      gestaltMultiChannels       = 11;     {multiple channel support}
  1371.                                           *AS03/AS04
  1372.      gestalt16BitAudioSupport   = 12;     {16 bit audio data supported}
  1373.                                           *AS04
  1374.  
  1375.      NOTE:
  1376.      If the gestaltSndPlayDoubleBuffer flag is not set you can check for
  1377.      the gestaltHasASC flag with the gestaltHardwareAttr selector. If this
  1378.      is true both SndPlayDoubleBuffer and SndStartFilePlay are present.
  1379.      *AD06
  1380. spsl (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
  1381.      gestaltSMPSPSendLetterVersion
  1382.      Returns the SMP SendLetter version as INTEGER.
  1383.  
  1384.      gestaltSMPSPSendLetterVersion = 'spsl'; {SMP Sendletter version}
  1385. stdf (System [7.0])
  1386.      (Macintosh Easy Open ext? [1.0?])
  1387.      gestaltStandardFileAttr
  1388.      Returns information about the Standard File Package.
  1389.  
  1390.      gestaltStandardFileAttr                       = 'stdf';
  1391.                                                  {Standard File attributes}
  1392.      gestaltStandardFile58                         = 0;
  1393.                           {StandardPutFile, StandardGetFile, CustomPutFile}
  1394.                                          {and CustomGetFile are available.}
  1395.      gestaltStandardFileTranslationAware           = 1; *AD03/AS04
  1396.      gestaltStandardFileHasColorIcons              = 2; *AD03/AS04/AS05
  1397.      gestaltStandardFileUseGenericIcons            = 3;
  1398.                 {force the LDEF to use only the system generic icons} *AT06
  1399.      gestaltStandardFileHasDynamicVolumeAllocation = 4;
  1400.                                       {supports more than 20 volumes} *AT06
  1401. sysa (System [7.1.2?]) *AS04
  1402.      gestaltSysArchitecture
  1403.      Returns one of the following values, indicating the type of
  1404.      architecture on which the application is currently running.
  1405.  
  1406.      gestaltSysArchitecture = 'sysa'; {System Architecture type}
  1407.      gestalt68k             = 1;
  1408.      gestaltPowerPC         = 2;
  1409. sysv (System [6.0.4]) INF
  1410.      gestaltSystemVersion
  1411.      Returns the version number of the currently active System file as BCD.
  1412.  
  1413.      gestaltSystemVersion = 'sysv'; {System file version}
  1414.  
  1415.      NOTES:
  1416.      Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
  1417.      actually 6.0.8 in another way?
  1418.      The hard way to change the result value is to change the PTCH resource
  1419.      with ID# 0 in the System file. Change the word $07 at offset $0x00ED
  1420.      to $08.
  1421.  
  1422.      System    Resource   Offset  Data
  1423.      Version   Type  ID#
  1424.      6.0.4     PTCH  0    0x005E   0604
  1425.      6.0.8     PTCH  0    0x00EC   0607
  1426.      7.0       PTCH  0    0x056E   0700
  1427.      7.0.1     PTCH  0    0x0578   0701
  1428.      7.1       PTCH  0    0x057C   0710
  1429.  
  1430.      In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
  1431.      versions return $0606. See the 'osyv' selector.
  1432.      System J-6.0.7.1 returns $0609
  1433.  
  1434.      There are some system versions (like International System 6.0.8.1 or
  1435.      7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
  1436.      7.0.1.
  1437. tabl (System [6.0.4])
  1438.      gestaltSelectorTable?
  1439.      Returns a handle to the Gestalt selector table itself.
  1440.  
  1441.      gestaltSelectorTable? = 'tabl'; {Gestalt Table address}
  1442.  
  1443.      WARNING:
  1444.      Although this information isn't officially confirmed, it is probably
  1445.      correct.
  1446.  
  1447.      NOTE:
  1448.      The Gestalt selector table is kept in a resizable block in the system
  1449.      heap. The last item in the table is a dummy entry (INVALID), marked by
  1450.      a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
  1451.      snippet Pascal code to list all selectors)
  1452. tbtt (System [6.0.8])
  1453.      gestaltToolboxTable
  1454.      Returns the base address of the Toolbox trap table.
  1455.  
  1456.      gestaltToolboxTable = 'tbtt'; {Toolbox trap table base}
  1457. te   (System [6.0.5])
  1458.      gestaltTextEditVersion
  1459.      Returns a value that indicates which version of TextEdit is present.
  1460.  
  1461.      gestaltTextEditVersion = 'te  '; {TextEdit version}
  1462.      gestaltTE1             = 1;
  1463.      gestaltTE2             = 2;
  1464.      gestaltTE3             = 3;
  1465.      gestaltTE4             = 4;
  1466.      gestaltTE5             = 5;
  1467.  
  1468.      Version numbers for TextEdit
  1469.      ======================================================================
  1470.      Returned value       New Features           System software   Hardware
  1471.      ----------------------------------------------------------------------
  1472.      gestaltUndefSelector Multistyled TE         before 6.0.4      all
  1473.      gestaltTE1                                  6.0.4 Roman       IIci
  1474.      gestaltTE2           New width              6.0.4 non-Roman   IIci
  1475.                           measurement hook
  1476.                           Script Mgr compatible
  1477.      gestaltTE3                                  6.0.4 non-Roman   non-IIci
  1478.      gestaltTE4           TEFeatureFlag          6.0.5             all
  1479.      gestaltTE5           Text width             7.0               all
  1480.                           measurement hook
  1481.      ======================================================================
  1482.      (Source: Inside Macintosh Text, p.2-23)
  1483. term (System [7.1])
  1484.      gestaltTermMgrAttr
  1485.      Returns information about the Terminal Manager.
  1486.  
  1487.      gestaltTermMgrAttr        = 'term'; {Terminal Mgr attributes}
  1488.      gestaltTermMgrPresent     = 0;      {Terminal Mgr is present}
  1489.      gestaltTermMgrErrorString = 2;      *AS04
  1490. tmgr (System [6.0.4])
  1491.      gestaltTimeMgrVersion
  1492.      Returns a value that indicates the version of the Time Manager.
  1493.  
  1494.      gestaltTimeMgrVersion  = 'tmgr'; {Time Mgr version}
  1495.      gestaltStandardTimeMgr = 1;      {Standard Time Mgr}
  1496.      gestaltRevisedTimeMgr  = 2;      {Revised Time Mgr}
  1497.      gestaltExtendedTimeMgr = 3;      {Extended Time Mgr}
  1498. tsmv (System [7.1])
  1499.      gestaltTSMgrVersion *AT05
  1500.      Returns Text Services Manager version in BCD.
  1501.  
  1502.      gestaltTSMgrVersion = 'tsmv'; {Text Services Mgr version}
  1503. vers (System [6.0.4])
  1504.      gestaltVersion
  1505.      Returns the version of Gestalt as INTEGER.
  1506.  
  1507.      gestaltVersion = 'vers'; {Gestalt version}
  1508.  
  1509.      NOTE:
  1510.      Usually version 1 is present. On machines with ROM version 1917
  1511.      (Quadra 840AV, PowerMacs etc.) version 4 is present.
  1512. via1 (System [6.0.4, discontinued])
  1513.      gestaltVIA1Addr
  1514.      Returns the address of VIA 1.
  1515.  
  1516.      gestaltVIA1Addr = 'via1'; {VIA 1 address}
  1517. via2 (System [6.0.4, discontinued])
  1518.      gestaltVIA2Addr
  1519.      Returns the address of VIA 2.
  1520.  
  1521.      gestaltVIA2Addr = 'via2'; {VIA 2 address}
  1522. vm   (System [6.0.4])
  1523.      (RAM Doubler [1.0] by Connectix Corporation)
  1524.      gestaltVMAttr
  1525.      Returns information about virtual memory.
  1526.  
  1527.      gestaltVMPresent      = 0; {set; virtual memory present}
  1528.      gestaltVMNotInstalled = 0; {clear; virtual memory not present}
  1529. wma. (System [7.0])
  1530.      (Responder ext [2.0?])
  1531.      gestaltResponderAttr
  1532.      Returns information about the Workstation Management Agent a.k.a.
  1533.      Responder.
  1534.  
  1535.      gestaltResponderAttr    = 'wma.'; {Responder attributes}
  1536.      gestaltResponderPresent = 0;      {Responder is present}
  1537. xttt (System [6.0.8])
  1538.      gestaltExtToolboxTable
  1539.      Returns the base address of the Extended Toolbox trap table.
  1540.  
  1541.      gestaltExtToolboxTable = 'xttt'; {Extened Toolbox trap table}
  1542.  
  1543. Apple Additional Software
  1544. -------------------------
  1545. arb  (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
  1546.      gestaltArbitorAttr *AD02
  1547.      Returns information about the Serial Port Arbitration.
  1548.  
  1549.      gestaltArbitorAttr             = 'arb '; {Serial Port Arbitration}
  1550.                                               {attributes}
  1551.      gestaltSerialArbitrationExists = 0;      {Serial Port Arbitration}
  1552.                                               {installed}
  1553. ascr (AppleScript ext [1.0]) 
  1554.      gestaltAppleScriptAttr *AS08
  1555.      Returns information about AppleScript.
  1556.  
  1557.      gestaltAppleScriptAttr           = 'ascr'; {AppleScript attributes}
  1558.      gestaltAppleScriptPresent        = 0,
  1559.      gestaltAppleScriptPowerPCSupport = 1
  1560.  
  1561.      NOTE:
  1562.      OSA is the Open Scripting Architecture. It is the layer upon which all
  1563.      scripting languages sit and the method by which applications call
  1564.      scripts. (Jon Pugh)
  1565. ascv (AppleScript ext [1.0])
  1566.      gestaltAppleScriptVersion *AS08
  1567.      Returns the version of AppleScript as NumVersion.
  1568.  
  1569.      gestaltAppleScriptVersion = 'ascv'; {AppleScript version}
  1570.      
  1571.      NOTE:
  1572.      AppleScript 1.1 returns $01100110 which doesn't look like a proper
  1573.      version number (version 1.0 returned $01008000). (Rene Ros)
  1574. aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *AT03
  1575.      gestaltAudioCDAccessVersion?
  1576.      Returns Audio CD Access version in BCD.
  1577.  
  1578.      gestaltAudioCDAccessVersion? = 'aucd'; {Audio CD Access version}
  1579.  
  1580.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1581. cltn (QuickDraw GX [1.0])
  1582.      gestaltCollectionMgrVersion
  1583.      Returns the version of the Collection Manager as NumVersion.
  1584.  
  1585.      gestaltCollectionMgrVersion = 'cltn'; {Collection Mgr version}
  1586.  
  1587.      NOTE:
  1588.      The Collection Manager is a set of routines for maintaining tagged
  1589.      collections of data; GX uses it to support the "tags" that you can
  1590.      attach to GX objects, for holding special data, including
  1591.      user-defined data. (Lawrence D'Oliveiro)
  1592. cmta (ColorSync ext [1.0.4?]
  1593.      gestaltColorMatchingAttr *AS09
  1594.      Returns information about the ColorSync Utilities?
  1595.  
  1596.      gestaltColorMatchingAttr = 'cmta';
  1597.      gestaltHighLevelMatching = 0;
  1598.      gestaltSharedLibLoaded   = 1;
  1599. cmtc (ColorSync ext [1.0?])
  1600.      gestaltColorMatchingVersion
  1601.      Returns the version of the Color Matching software as BCD.
  1602.  
  1603.      gestaltColorMatchingVersion = 'cmtc'; {Color Matching version}
  1604.      gestaltColorSync10          = $0x0100; *AS09
  1605.      gestaltColorSync11          = $0x0110; *AS09
  1606.      gestaltColorSync104         = $0x0104; *AS09
  1607. cpkr (Color Picker ext [2.0?], part of ColorSync Software)
  1608.      gestaltColorPickerMgrAttr
  1609.      Returns information about the Color Picker Manager.
  1610.  
  1611.      gestaltColorPickerMgrAttr     = 'cpkr'; {ColorPicker Mgr attributes}
  1612.      gestaltColorPickerMgrPresent? = 0?;     {ColorPicker Mgr Present}
  1613.      (Marco Piovanelli, Lawrence D'Oliveiro)
  1614.  
  1615.      NOTE:
  1616.      Extension version 2.0a4 returns a response ($0x0001) which is
  1617.      according to the info above. Version 2.0a5 however returns $0x0100, is
  1618.      this an error?
  1619. drag (Macintosh Drag and Drop ext [1.0])
  1620.      gestaltDragMgrAttr *AD05
  1621.      Returns information about the Drag Manager.
  1622.  
  1623.      gestaltDragMgrAttr         = 'drag'; {Drag Manager attributes}
  1624.      gestaltDragMgrPresent      =  0;     {Drag Manager is present}
  1625.      gestaltDragMgrFloatingWind =  1;     *AS10
  1626.      gestaltPPCDragLibPresent   =  2;     *AS10
  1627.      gestalt???                 = 31;
  1628. gfxa (QuickDraw GX [1.0])
  1629.      gestaltGraphicsAttr
  1630.      Returns information about the Graphics.
  1631.  
  1632.      gestaltGraphicsAttr        = 'gfxa'; {graphics attributes bits }
  1633.      gestaltGraphicsIsDebugging = 0;
  1634.      gestaltGraphicsIsLoaded    = 1;
  1635.      gestaltGraphicsIsPowerPC   = 2;
  1636. grfx (QuickDraw GX ext [1.0])
  1637.      gestaltGraphicsVersion
  1638.      Returns the version of the Graphics as INTEGER.
  1639.  
  1640.      gestaltGraphicsVersion        = 'grfx'; {Gestalt version selector}
  1641.      gestaltCurrentGraphicsVersion = 16;     {supposed value returned}
  1642.  
  1643.      NOTE:
  1644.      QuickDraw GX beta 3 returns 19. And System 7.5 with QD GX on a PB 540c
  1645.      returns 65536...
  1646. hscd (High Sierra File Access ext [4.0], part of Apple CD-ROM Software) 
  1647.                                                                       *AT03
  1648.      gestaltHighSierraFAVersion?
  1649.      Returns High Sierra File Access version in BCD.
  1650.  
  1651.      gestaltHighSierraFAVersion? = 'hscd'; {High Sierra Fileaccess version}
  1652.  
  1653.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1654. icmp (QuickTime ext [1.0])
  1655.      gestaltCompressionMgr
  1656.      Returns Compression Manager version as Integer
  1657.  
  1658.      gestaltCompressionMgr = 'icmp'; {determines if Image Compression}
  1659.                                      {manager is available} *AS01
  1660. kids (At Ease [1.0])
  1661.      kAtEaseGestalt
  1662.      Returns a handle to a structure holding information about At Ease.
  1663.  
  1664.      The following code was published by Apple *AT06:
  1665.  
  1666.      #define kAtEaseGestalt    'kids'
  1667.      typedef struct {
  1668.        short  giVersion;         /* structure version */
  1669.        short  giIsActive;        /* true if at ease is currently running */
  1670.        short  giAutoCreateAlias; /* if true then auto create alias */
  1671.        short  giRequestFloppy;   /* if true then request floppy on new
  1672.                                     saves */
  1673.        short  giStacksAreApps;   /* if true then HyperCard stacks are shown
  1674.                                     with applications */
  1675.        FSSpec giItemsLocation;   /* location of the At Ease Items folder */
  1676.      } GestaltRec, *GestaltRecPtr, **GestaltRecHand;
  1677. kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *AT03
  1678.      gestaltApplePhotoAccessVersion?
  1679.      Returns Apple Phote Access version in BCD.
  1680.  
  1681.      gestaltApplePhotoAccessVersion? = 'kpcd';
  1682.  
  1683.      NOTE:
  1684.      The above is what the documentation says. However it seems to return
  1685.      always $FFFFFF7 as response.
  1686. mess (QuickDraw GX [1.0])
  1687.      gestaltMessageMgrVersion
  1688.      Returns the version of the Message Manager as NumVersion.
  1689.  
  1690.      gestaltMessageMgrVersion = 'mess'; {Message Mgr version}
  1691.  
  1692.      NOTE:
  1693.      The Message Manager is an implementation of object-oriented-style
  1694.      message passing within an inheritance hierarchy, that can be used from
  1695.      non-OO languages.
  1696.      It is used by the GX printing system, to allow the customization of
  1697.      printing behaviour by letting applications (and developers of printing
  1698.      extensions) intercept messages sent to the printer driver.
  1699.      (Lawrence D'Oliveiro)
  1700. mtcp (MacTCP cp [1.1])
  1701.      gestaltMacTCPAttr? *AD01
  1702.      Returns the version of MacTCP, if opened, as an index-value.
  1703.  
  1704.      Response     Version
  1705.      ====================
  1706.         1          1.1
  1707.         2          1.1.1
  1708.         3          2.0
  1709.  
  1710.      If MacTCP is not opened a value of 0 is returned.
  1711.      No constants are defined in the documentation.
  1712. pmgr (QuickDraw GX [1.0])
  1713.      gestaltPrintingMgrVersion
  1714.      Returns the version of the QuickDraw GX Printing Manager as
  1715.      NumVersion.
  1716.  
  1717.      gestaltPrintingMgrVersion = 'pmgr'; {Printing Mgr version}
  1718.  
  1719.      NOTE: System 7.5 with QD GX on a PB 540c returns 65536...
  1720. qdgx (QuickDraw GX [1.0])
  1721.      gestaltGXVersion
  1722.      Returns the version of QuickDraw GX as NumVersion.
  1723.  
  1724.      gestaltGXVersion = 'qdgx'; {QuickDraw GX version}
  1725.  
  1726.      NOTE: System 7.5 with QD GX on a PB 540c returns 65536...
  1727. qtim (QuickTime ext [1.0])
  1728.      gestaltQuickTime
  1729.      Returns QuickTime version as NumVersion.
  1730.  
  1731.      gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
  1732.  
  1733.      NOTES:
  1734.      The returned version is obtained from 'vers' resource ID# 1.
  1735.  
  1736.      See 'Reports' chapter (QuickTime section) for more information.
  1737. qtrs (QuickTime PowerPlug ext [1.0?])
  1738.      gestaltQuickTimeFeatures *AS06
  1739.      
  1740.      gestaltQuickTimeFeatures      = 'qtrs'; {QT Features attributes}
  1741.      gestaltPPCQuickTimeLibPresent = 0,         {PowerPC QT glue library is}
  1742.                                              {present}
  1743.  
  1744.      NOTE:
  1745.      The gestaltPPCQuickTimeLibPresent bit indicates that the native
  1746.      QuickTime interface library is available and can be called by native
  1747.      PowerPC applications. (Dave Radcliffe)
  1748. scra (Macintosh Easy Open ext? [1.0]) *AD03
  1749.      gestaltScrapMgrAttr
  1750.      Returns information about the Scrap Manager.
  1751.  
  1752.      gestaltScrapMgrAttr             = 'scra'; {Scrap Mgr attributes}
  1753.      gestaltScrapMgrTranslationAware = 0;
  1754.      gestaltTranslationMgrHintOrder  = 1;      *AS04
  1755. sdev (Control Strip cp [1.0], part of ???)
  1756.      gestaltControlStripAttr
  1757.      Returns information about the Control Strip software.
  1758.  
  1759.      gestaltControlStripAttr   = 'sdev';
  1760.      gestaltControlStripExists = 0;     {TRUE = control strip is installed}
  1761.  
  1762.      NOTE:
  1763.      Control Strip displays a bar with icons and popup menus to quickly
  1764.      change settings on portable macs, i.e. AppleTalk and the sound volume.
  1765. sdvr (Control Strip cp [1.0], part of ???)
  1766.      gestaltControlStripVersion
  1767.      Returns the version of Control Strip software that is installed as
  1768.      NumVersion.
  1769.  
  1770.      gestaltControlStripVersion = 'sdvr';
  1771.  
  1772.      WARNING:
  1773.      The same selector code is used by PowerTalk. See the same entry with
  1774.      the Apple System Software section.
  1775.  
  1776.      NOTE:
  1777.      Control Strip displays a bar with icons and popup menus to quickly
  1778.      change settings on portable macs, i.e. AppleTalk and the sound volume.
  1779. snhw (System? [???])
  1780.      (Sound Manager ext [3.0])
  1781.      gestaltSoundHardware
  1782.      Returns type of hardware used for sound?
  1783.  
  1784.      gestaltSoundHardware = 'snhw'; {Sound Hardware}
  1785.      gestaltASC           = 'asc '; {ASC}
  1786.      gestaltDSP           = 'dsp '; {DSP}
  1787.      gestaltClassicSound  = 'clas'; {Classic Mac?}
  1788.      gestaltAWAC?         = 'awac'; {returned on PowerMac}
  1789.      gestaltSing?         = 'sing'; {returned on PB 540c}
  1790. strm (Remote Access Aliases [1.0], part of Apple Remote Access)
  1791.      gestaltRemoteAccessAttr *AD02
  1792.  
  1793.      gestaltRemoteAccessAttr    = 'strm'; {Remote Access attributes}
  1794.      gestaltRemoteAccessExists  = 0;      {RA Connection Interface is}
  1795.                                           {available}
  1796.      gestalt???                 = 1;      {installed since ARA 2.0?}
  1797.      gestalt???                 = 3;      {installed since ARA 2.0?}
  1798. teat (Macintosh Drag and Drop ext [1.0])
  1799.      gestaltTEAttr *AD05
  1800.      Returns information about the functions and capabilities of TextEdit.
  1801.  
  1802.      gestaltTEAttr            = 'teat'; {TextEdit attributes}
  1803.      gestaltTEHasGetHiliteRgn = 0;      {TEGetHiliteRgn present}
  1804. thds (Thread Manager ext [1.1]) *AD04
  1805.      (QuickDraw GX ext [1.0?])
  1806.      gestaltThreadAttr
  1807.      Returns information about the Thread Manager.
  1808.  
  1809.      gestaltThreadAttr            = 'thds'; {Thread Manager attributes}
  1810.      gestaltThreadsPresent        = 0;      {bit true if Threads present}
  1811.      gestaltSpecificMatchSupport  = 1;      {bit true if ‘exact match’}
  1812.                                             {API supported}
  1813.      gestaltThreadsLibraryPresent = 2;      {bit true if ThreadsLib is}
  1814.                                             {present}
  1815.      gestalt???                   = 4;      {unknown, System 7.5}
  1816. tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
  1817.      gestaltTSMTEAttr *AS07
  1818.      Returns information about the Text Services Manager for TextEdit.
  1819.  
  1820.      gestaltTSMTEAttr    = 'tmTE'; {TSM for TE attributes}
  1821.      gestaltTSMTEPresent = 0;      {TSM for TE is present}
  1822. tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
  1823.      gestaltTSMTEVersion *AS07
  1824.      Returns the version of the Text Services Manager for TextEdit as BCD.
  1825.  
  1826.      gestaltTSMTEVersion = 'tmTV'; {TSM for TE version}
  1827.      gestaltTSMTE1       = $0100;  {TSM for TE version 1.0}
  1828. ttsc (Text-To-Speech Manager ext [1.0?])
  1829.      gestaltSpeechAttr
  1830.      Returns information about the Speech Manager.
  1831.  
  1832.      gestaltSpeechAttr       = 'ttsc'; {Text-To-Speech Manager attributes}
  1833.      gestaltSpeechMgrPresent = 0;      {bit true if Speech Mgr present}
  1834. ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *AT03
  1835.      gestaltForeignFAVersion?
  1836.      Returns Foreign File Access version in BCD.
  1837.  
  1838.      gestaltForeignFAVersion? = 'ufox'; {Foreign File Access version}
  1839.  
  1840.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1841. xlat (Macintosh Easy Open ext [1.0]) *AD03
  1842.      gestaltTranslationAttr
  1843.      Returns information about the Translation Manager.
  1844.  
  1845.      gestaltTranslationAttr      = 'xlat'; {Translation Manager attributes}
  1846.      gestaltTranslationMgrExists = 0;      {TM present}
  1847.      gestalt???                  = 1;      {by MEA 1.0.3 to indicate fix?}
  1848. XTND (??? [???])
  1849.      gestaltXTNDAttr *AS11
  1850.      Returns information about XTND Manager?
  1851.  
  1852.      gestaltXTNDAttr       = 'XTND';
  1853.      gestaltPPCXTNDPresent = 1;
  1854.  
  1855.      NOTE:
  1856.      Is used in some code to check if XTND engine is present. However it is
  1857.      unknown when it is installed, so supposedly it is meant for future
  1858.      use. Like a built-in XTND engine in the System Software? When the
  1859.      selector is installed all operations are dispatched through trap
  1860.      _XTNDMgr ($ABF4) otherwise the library provides the code.
  1861.      (Marco Piovanelli)
  1862.  
  1863. Third Parties Software
  1864. ----------------------
  1865. !SYM (Symbionts ext [1.0] by B. Kevin Hardman)
  1866.      gestaltSymbiontsTable
  1867.      Returns a pointer to a structure containing the size of the System
  1868.      Heap before and after loading the INITs.
  1869.  
  1870.      gestaltSymbionts = '!SYM'; {Symbionts address}
  1871. ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
  1872.      gestaltAfterDarkFolder *M05
  1873.      Returns a pointer to a procedure that gives the DirID and vRefNum of
  1874.      the 'After Dark Files' folder.
  1875.  
  1876.      gestaltAfterDarkFolder = 'ADfd';
  1877.      
  1878.      NOTE:
  1879.      See for more information the AfterDark Gestalt header file (See
  1880.      chapter 'Related Software' for availability)
  1881. ADrk (AfterDark [2.0] by Berkeley Systems, Inc.)
  1882.      gestaltAfterDarkAttr *M05
  1883.      Returns a longword bitmask containing public information about
  1884.      After Dark.
  1885.  
  1886.      gestaltAfterDarkAttr = 'ADrk'; {After Dark states}
  1887.      eSystemIQActive      = 0;      {SystemIQx activity monitor active}
  1888.      eSoundActive         = 1;      {AD has allocated a sound channel}
  1889.      eADAcquiringPassword = 2;      {After Dark has its password dialog up}
  1890.  
  1891.      NOTE:
  1892.      See for more information the AfterDark Gestalt header file (See
  1893.      chapter 'Related Software' for availability)
  1894. ApoL (Apollo ext [1.0] by Jeremy Roussak)
  1895.      gestaltApolloTable
  1896.      Returns a handle to an instance of a structure.
  1897.  
  1898.      gestaltApolloTable = 'ApoL'; {Apollo address}
  1899.  
  1900.      NOTE:
  1901.      See for more information the Programmers' Information chapter in the
  1902.      Apollo 1.0 documentation. (Jeremy Roussak)
  1903. ASHI (Arashi app [???] by Juri Munkki)
  1904.      ???
  1905.      Returns information about the presence of Arashi by returning one (1)
  1906.      if loaded, and zero (0) when removed.
  1907. AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
  1908.      gestaltAutoBuildVersion
  1909.      Returns the version of AutoBuild as NumVersion.
  1910.  
  1911.      gestaltAutoBuildVersion = 'AuBu'; {AutoBuild version}
  1912.  
  1913.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1914. BBlk (Basic Black cp [1.3], by Mason L. Bliss)
  1915.      gestaltBasicBlackAddr
  1916.      Returns the address of Basic Black's patch globals.
  1917.  
  1918.      gestaltBasicBlackAddr = 'BBlk'; {Basic Black address}
  1919.  
  1920.      NOTE:
  1921.      See documentation included with Basic Black for more information.
  1922. BIFF (QM Biff ext [1.0] by Patrick C. Beard)
  1923.      ???
  1924.      Determines if there is mail (QuickMail). The response long word is 1
  1925.      if you have mail, and 0 if you don't.
  1926. CKI3 (AETracker cp [3.0] by C.K. Haun)
  1927.      gestaltAETrackerAddr
  1928.      This selector returns a pointer to the external interface routine for
  1929.      AETracker, details of which are in the AETracker interface guide.
  1930.      (C.K. Haun)
  1931.  
  1932.      gestaltAETrackerAddr = 'CKI3'; {AETracker address}
  1933. dBgP (DBugR cp [1.0?] by Alessandro Levi Montalcini)
  1934.      ???
  1935.      Returns a pointer to a data structure with the preferences,
  1936.      identical to the data in the PREF resource, for which a template
  1937.      is included.
  1938.  
  1939.      NOTE: The d is actually the option-d character (ASCII $B6).
  1940. EagL (Eagle ext [1.4], part of Apollo 1.1 by Jeremy Roussak)
  1941.      gestaltEagleAttr?
  1942.      Returns information about the state of the Eagle background
  1943.      application.
  1944.  
  1945.      gestaltEagleAttr?     = 'EagL'; {Eagle attributes}
  1946.      gestaltEaglePPCReady? = 0;      {Eagle can accept next PPC}
  1947. FrcP (Decor cp [1.0] by Francois Pottier)
  1948.      gestaltDecorAddr
  1949.      Returns a pointer to a structure which can be read or changed, and
  1950.      enables programmers to change the picture on the desktop.
  1951.  
  1952.      gestaltDecorAddr = 'FrcP'; {Decor address}
  1953.  
  1954.      NOTES:
  1955.      See for more information on how to use this structure the
  1956.      documentation included with Decor 1.0 or later.
  1957.  
  1958.      The c is actually the option-c character (ASCII $8D).
  1959. Gast (Gestalt! appl [2.9.2] by Roland Mansson)
  1960.      gestaltGestaltVersion
  1961.      Returns the version of the application as NumVersion.
  1962.      GestaltValue is removed when application quits. Just for fun.
  1963.      (Roland Mansson)
  1964.  
  1965.      gestaltGestaltVersion = 'Gast'; {Gestalt! version}
  1966.  
  1967.      NOTE: The a is actually the option-u/a character (ASCII $8A).
  1968. GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
  1969.      ???
  1970.      Snippet code, see documentation. (See chapter 'Related Software'
  1971.      for availability).
  1972. GWat (GestaltWatch ext [1.0] by Scot Bronson)
  1973.      ???
  1974.      Returns pointer to structure where collected information is stored.
  1975.  
  1976.      NOTE: In development, not yet available.
  1977. IF 8 (Speak Note cp [???] by Glenn R. Howes)
  1978.      ??? (CREATOR)
  1979.      Returns information about the installed copy of Speak Note.
  1980.  
  1981.      ???Attr                    = 'IF 8';
  1982.      gestaltSpeechNoteAvailable = 0;
  1983. Lnch (Network Time cp [2.0] by Pete Resnick)
  1984.      (First Launch Gestalt INIT code resource, by Pete Resnick)
  1985.      gestaltFirstLaunchAttr
  1986.      Returns info on whether the _Launch trap has been called by the
  1987.      System.
  1988.  
  1989.      gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
  1990.      gestaltFirstLaunchDone = 0;      {_Launch called, INIT time over}
  1991.  
  1992.      NOTE:
  1993.      Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
  1994.      _Launch trap has been called since startup of the machine. All other
  1995.      bits are reserved and currently 0. Even if not installed at INIT time,
  1996.      Network Time will install the Gestalt selector if it is not already
  1997.      there when the control panel is opened and automatically set
  1998.      bit 0 to 1.
  1999.      68000 assembler source code is available for the INIT that installs
  2000.      the selector, and INIT resource -4048 from Network Time may be
  2001.      stolen (and renumbered as desired) and used in any INIT file as
  2002.      desired. (Pete Resnick)
  2003. NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
  2004.      gestaltNovellIPXVersion
  2005.      Returns the version of MacIPX as NumVersion.
  2006.  
  2007.      gestaltNovellIPXVersion = 'NIPX'; {MacIPX version}
  2008.  
  2009.      NOTE:
  2010.      If the selector returns an error (i.e. no such selector?) then MacIPX
  2011.      is not installed. If the selector returns 0L then MacIPX is installed
  2012.      but the driver is not open. Any other value is the version.
  2013.      (Duane Murphy)
  2014. NMBT (Attention cp [0.6] by Marco Piovanelli)
  2015.      gestaltAttentionAddr
  2016.      The response value returned is a pointer to a read-only parameter
  2017.      block in the system heap.
  2018.  
  2019.      gestaltAttentionAddr = 'NMBT'; {Attention address}
  2020.  
  2021.      NOTE: See for more detailed information the included ReadMe file.
  2022. NTim (Network Time cp [2.0] by Pete Resnick)
  2023.      ???
  2024.      Returns information private to Network Time.
  2025. PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
  2026.      gestaltPwrSwitcherTable
  2027.      Returns a pointer to a private data structure (undocumented).
  2028.  
  2029.      gestaltPwrSwitcherTable = 'PWRS'; {Power Switcher address}
  2030. SAVC (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  2031.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  2032.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  2033.      gestaltScreenSaverControl *M05
  2034.      Returns a pointer to a procedure of type
  2035.  
  2036.      typedef pascal OSErr (*SaverControlProcPtr) (SaverCommand command);
  2037.  
  2038.      which allows controlling the screen saver.
  2039.  
  2040.      gestaltScreenSaverControl = 'SAVC';
  2041.  
  2042.      NOTE:
  2043.      See for more information the AfterDark Gestalt header file (See
  2044.      chapter 'Related Software' for availability)
  2045. SAVR (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  2046.      (Arashi app [???] by Juri Munkki)
  2047.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  2048.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  2049.      gestaltScreenSaverAttr *M05
  2050.      Returns information about the current screen saver. Defined if a
  2051.      screen saver is installed.
  2052.  
  2053.      gestaltScreenSaverAttr    = 'SAVR'; {Screen saver attributes}
  2054.      gestaltSaverTurnedOn      = 0;      {saver enabled/disabled}
  2055.      gestaltSaverAsleep        = 1;      {saver currently asleep}
  2056.      gestaltSaverDemoMode      = 2;      {saver sleeping in demo mode}
  2057.      gestaltSaverPasswordMode  = 3;      {saver sleeping in password-}
  2058.                                          {protected mode}
  2059.      gestaltAppDrawingDisabled = 4;      {QD drawing disallowed between}
  2060.                                          {module animation frames}
  2061.  
  2062.      NOTE:
  2063.      See for more information the AfterDark Gestalt header file (See
  2064.      chapter 'Related Software' for availability)
  2065. SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
  2066.      kSDDelayCreator
  2067.      Returns a pointer to a data structure described in the documentation
  2068.      included with Shutdown Delay.
  2069.  
  2070.      kSDDelayCreator = 'SDdD';
  2071.  
  2072.      NOTE: The d is actually the option-shift v character (ASCII $D7).
  2073. SHCM (Shared Code Manager ext [1.0] by Eric Schlegel of Microsoft Corp.)
  2074.      gestalt???
  2075.      Returns a pointer to an undocumented entrypoint into the Shared Code
  2076.      Manager.
  2077.  
  2078.      gestalt??? = 'SHCM';
  2079.  
  2080.      NOTE:
  2081.      The Shared Code Manager (1991) is a simple DLL mechanism that is
  2082.      currently used by Microsoft's Mac OLE 1.0 (Object Linking & Embedding)
  2083.      and the applications that use OLE 1.0. (Eric Schlegel)
  2084. SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
  2085.      gestaltStuffItSpaceSaverAddr
  2086.      Returns the address of the SpaceSaver "command module" which allows
  2087.      developers to access all the functions of SpaceSaver.
  2088.      (Leonard Rosenthol)
  2089.  
  2090.      gestaltStuffItSpaceSaverAddr = 'SLip';
  2091. TExT (FileTyper Menu cp [none], part of FileTyper by Daniel Azuma)
  2092.      gestaltTyperMenuAttr
  2093.      Returns information about the FileTyper Menu's operation.
  2094.  
  2095.      gestaltTyperMenuAttr = 'TExT';
  2096.      gestalt???           = 0;      {TRUE = NO item added to Finder's}
  2097.                                     {File menu}
  2098.  
  2099.      WARNING:
  2100.      No currently released version of FileTyper Menu (up to and including
  2101.      4.1.1) installs this selector, but future versions may. Check for the
  2102.      existence of this selector first, if you use it. (Daniel Azuma)
  2103. TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
  2104.      ???
  2105.      The value returned is a pointer to a Monitor information block. *M04
  2106.      (Scott Bronson)
  2107. Typ4 (FileTyper Menu cp [4.1.1], part of FileTyper by Daniel Azuma)
  2108.      gestaltTyperMenuPriv
  2109.      Returns private information, the existence of this selector indicates
  2110.      FileTyper Menu is installed.
  2111.  
  2112.      gestaltTyperMenuPriv = 'Typ4';
  2113.  
  2114.      NOTE:
  2115.      Third parties can determine if FileTyper Menu is installed by
  2116.      checking for the existence of this selector. However, the actual value
  2117.      returned is private and subject to change. (Daniel Azuma)
  2118. UMAM (Authentication Manager cp [1.0.7] by Robert John Churchill of the
  2119.                                            University of Michigan)
  2120.      gestaltAuthManVersion
  2121.      Returns the version of the Authentication Manager as Double BCD.
  2122.  
  2123.      gestaltAuthManVersion = 'UMAM';
  2124. YeHa (SpeedyFinder7 cp [1.5.4?-1.5.9] by Victor Tan)
  2125.      ???
  2126.      Returns a pointer to a private data structure (undocumented).
  2127.  
  2128.      NOTE:
  2129.      The structure to which the Gestalt selector refers changes almost
  2130.      invariably from version to version of SF7. Should someone work out
  2131.      parts of the structure of the selector keep in mind that it will
  2132.      almost certainly change in the next minor release and definitely with
  2133.      the next major release. (Victor Tan)
  2134.  
  2135. Unknown Gestalt Selector Codes
  2136. ==============================
  2137. The following sections list selector codes of which the meaning is unknown.
  2138.  
  2139. Apple System Software
  2140. ---------------------
  2141. aint (System? [7.1.1?])
  2142.      NOTE: Returns 2 on a C660AV and Q840AV.
  2143. apml (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and 7.5)
  2144.      Bit 0 and 31 set.
  2145. bast (Performa cp [1.1], part of System 7.1P)
  2146. batt (Powerbook Duo Enabler [1.0])
  2147.      (System Enabler 111 [1.0])
  2148.      (System Enabler 121 [1.0])
  2149.      (System Enabler 131 [1.0])
  2150.      (System Enabler 201 [1.0]))
  2151.      Returns information about the PowerBook battery?
  2152.      
  2153.      gestaltBatteryAttr?      = 'batt';
  2154.      gestalt???               = 0;
  2155.      gestaltAdapterConnected? = 1;
  2156.      gestalt???               = 2;
  2157. brcn (Screen? cp [1.0?] on Color Classic)
  2158. brcN (Energy Save cp [1.0?], part of Monitor Energy Saver)
  2159. bugx (System Update ext [3.0])
  2160.  
  2161.      NOTE:
  2162.      The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
  2163.      selectors to indicate which fixes are installed on a given machine.
  2164.      These are for Apple internal use only, and developers should not rely
  2165.      on these. There is no guarantee that they will be supported in future
  2166.      versions of Macintosh system software. *AT06
  2167. bugy (32-bit System Enabler [1.0])
  2168.      (Hardware System Update ext [1.0])
  2169.      (Network Launch Fix ext [1.0])
  2170.      (Sound Manager ext [3.0])
  2171.      (System enabler 065)
  2172.      gestaltEnablerAttr?
  2173.  
  2174.      gestaltEnablerAttr?                  =  'bugy'; ?
  2175.      gestaltEnablerEgretDispatchPatch?    =  0; {these correct the system}?
  2176.      gestaltEnablerEgretTimePatch?        =  1; { clock and modem perf.}?
  2177.      gestalt???                           =  2; {unknown, Hardware Upd.}
  2178.      gestaltEnablerEgretTickHandlerPatch? =  3; { see bit 0 & 1}?
  2179.      gestalt???                           =  4; {unknown, Hardware Upd.}
  2180.      gestaltEnablerSCSIPatch?             =  5; {floppy drive fixed}?
  2181.      gestalt???                           =  6; {unknown, Hardware Upd.}
  2182.      gestaltEnabler32bit?                 =  7; {32-bit enabler present}?
  2183.      gestalt???                           =  9; {unknown, Sound Mgr 3.0}
  2184.      gestalt???                           = 11; {unknown, Hardware Upd.}
  2185.      gestalt???                           = 12; {unknown, Hardware Upd.}
  2186.      gestalt???                           = 13; {unknown, Hardware Upd.}
  2187.      gestalt???                           = 14; {unknown, Hardware Upd.}
  2188.      gestalt???                           = 15; {unknown, Hardware Upd.}
  2189.      gestalt???                           = 16; {unknown, Hardware Upd.}
  2190.      gestaltEnablerKeyboardPatch?         = 17; {corrects Adjustable Kbd
  2191.                                              gestaltKeyboardType response?}
  2192.      gestalt???                           = 18; {unknown, Hardware Upd.}
  2193.      gestalt???                           = 19; {unknown, ???}
  2194.      gestalt???                           = 24; {unknown, ???}
  2195.      gestalt???                           = 25; {unknown, ???}
  2196.      gestalt???                           = 26; {unknown, ???}
  2197.      gestaltNetworkLaunchFix?             = 27; {fix problem with appl. on}
  2198.                                                 {server launch with 68040}
  2199.      gestalt???                           = 28; {unknown, ???}
  2200.      gestalt???                           = 31; {unknown, ???}
  2201.  
  2202.      WARNING:
  2203.      These are ALL guesses. Well not entirely, I used the ResEdit CODE
  2204.      Editor to peek into the 32-bit System Enabler, Hardware System update
  2205.      and other software. Please check if I'am right. You should be able to
  2206.      find some of the answers in the INIT resource of the Hardware Update
  2207.      and the names of the PTCH resources in version 1.0 were also useful...
  2208.      The System Enablers (for new Macintosh models) don't seem to install
  2209.      or change any Gestalt selector to indicate their presence.
  2210.  
  2211.      NOTE:
  2212.      The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
  2213.      selectors to indicate which fixes are installed on a given machine.
  2214.      These are for Apple internal use only, and developers should not rely
  2215.      on these. There is no guarantee that they will be supported in future
  2216.      versions of Macintosh system software. *AT06
  2217. bugz (System (Tuna Helper INIT rsrc) [7.0]/Tune-up ext)
  2218.  
  2219.      NOTE:
  2220.      The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
  2221.      selectors to indicate which fixes are installed on a given machine.
  2222.      These are for Apple internal use only, and developers should not rely
  2223.      on these. There is no guarantee that they will be supported in future
  2224.      versions of Macintosh system software. *AT06
  2225. cate (Catalogs Extension? ext [???], part of System 7.1 Pro and 7.5 ?)
  2226.      Bit 0 set.
  2227. cfmg (System [7.1.2 on PowerMac])
  2228. clbv (PowerTalk ext [1.0?], part of System 7.1 Pro and 7.5)
  2229.      Bit 0 set.
  2230. ctxm (???)
  2231. detc (???)
  2232. dude (Powerbook Duo Enabler [1.0])
  2233.      (System Enabler 111 [1.0])
  2234.      (System Enabler 121 [1.0])
  2235.      (System Enabler 131 [1.0])
  2236.      (System Enabler 201 [1.0]))
  2237. dudi (Powerbook Duo Enabler [1.0])
  2238.      (System Enabler 111 [1.0])
  2239.      (System Enabler 121 [1.0])
  2240.      (System Enabler 131 [1.0])
  2241.      (System Enabler 201 [1.0]))
  2242. fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2243.      Installed by Finder extension?
  2244. fnda (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2245.      NOTE: The a is actually the option-a character (ASCII $8C).
  2246. fnd& (Finder?, System? [7.1.2 on PowerMac?])
  2247.      NOTE: The & is actually the option-shift-a character (ASCII $E5).
  2248. fnd* (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2249.      Installed by Finder extension?
  2250.  
  2251.      NOTE: The * is actually the shift-6 character (ASCII $F6).
  2252. fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2253.      Installed by Finder extension?
  2254. fnd  (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2255.      Installed by Finder extension?
  2256. fndc (Finder?, System? [7.1.2 on PowerMac?])
  2257. fndn (Finder?, System? [7.1.2 on PowerMac?])
  2258.      NOTE: The n is actually an option-n, n (ASCII $96).
  2259. FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2260.      Installed by Finder extension?
  2261. gntz (System [7.1.2 on PowerMac])
  2262. gpad (System? [7.5?])
  2263. gprf (System? [7.5?])
  2264. harp (PowerBook cp? [7.2?])
  2265. hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
  2266. heap (System [7.1.2 on PowerMac])
  2267.      Bits 1 and 5 set.
  2268. iadj (System? [7.1.2?] with PowerTalk?)
  2269.      (Display Enabler ext, Icon relocation INIT ID#3 [1.0])
  2270. idsp (???)
  2271. mbox (Mailbox Extension? ext [???], part of System 7.1 Pro and 7.5 ?)
  2272. mjik (MenuMagic ext [1.0], part of System 7.1 Pro and 7.5)
  2273. mtv! (TV Setup cp [1.0], part of System for Macintosh TV?)
  2274.      NOTE:
  2275.      Not seen installed, disassembled control panel, meaning unknown.
  2276.      It's probably an address. (Rene Ros)
  2277. ldap (???)
  2278. PhoN (PowerBook Setup cp [7.3.1?], PhoneINIT INIT resource)
  2279. port (Powerbook Duo Enabler [1.0])
  2280.      (System Enabler 111 [1.0])
  2281.      (System Enabler 121 [1.0])
  2282.      (System Enabler 131 [1.0])
  2283.      (System Enabler 201 [1.0])
  2284.      gestaltPortAttr?
  2285.      Returns information about the ports?
  2286.  
  2287.      gestaltPortAttr?           = 'port';
  2288.      gestaltHasInternalModem?   = 0?;
  2289.      gestaltHasExternalPrinter? = 1?;
  2290.      gestaltHasExternalModem?   = 2?;
  2291.  
  2292.      NOTE:
  2293.      System Enabler 201 and PowerBook Duo enabler contain a GDEF resource
  2294.      which indicates bits 0, 1 and 2 can be set. (Rene Ros)
  2295. ppad (Performa cp [1.1], part of System 7.1P)
  2296. pprf (Performa cp [1.1], part of System 7.1P)
  2297. pxtn (System? [7.5?])
  2298. reno (Apple Help? ext? [???], part of System 7.1 Pro and 7.5 ?)
  2299. scsi (System [7.1?])
  2300.      (SCSI Manager ext [4.3])
  2301.      gestaltSCSIAttr? (not listed)
  2302.      Returns information about the SCSI Manager?
  2303.  
  2304.      gestaltSCSIAttr? = 'scsi';
  2305.      gestalt???       = 0;
  2306.      gestalt???       = 1;
  2307.      gestalt???       = 2;
  2308.  
  2309.      NOTE:
  2310.      On PowerMac and Centris 660AV returns 3 (System 7.1) or 7
  2311.      (System 7.1.2)
  2312.      And the SCSI Manager 4.3 package returns 4 with other models.
  2313. serh (System? [7.1.2?])
  2314.      gestaltSerialHardware?
  2315.      Returns type of hardware used for serial I/O?
  2316.  
  2317.      gestaltSerialHardware? = 'serh'; {Serial Hardware}
  2318.      gestaltClassicSer?     = 'Clas'; {returned on PPC 8100/80 (GeoPort?)}
  2319. shal (System [7.1?])
  2320.      NOTE: Returns 2 on PowerMac and 1 on Centris 660AV
  2321. tpad (System? [7.5?] on PowerBook 520/540?)
  2322. udsk (System [7.1.2 on PowerMac])
  2323. udsv (System [7.1.2 on PowerMac])
  2324. vdrc (System? [7.5?] on PowerBook 520/540?)
  2325. vmbs (System [7.0])
  2326.      (RAM Doubler [1.0] by Connectix Corporation)
  2327.      gestaltVMBackingStoreRef? (not listed)
  2328.      Returns the file reference number of the Virtual Memory storage file
  2329.      if VM is present.
  2330.  
  2331.      gestaltVMBackingStoreRef? = 'vmbs';
  2332. vmcl (System, VM on [7.0])
  2333. vmem (RAM Doubler [1.0] by Connectix Corporation)
  2334.      gestaltVMExtensionMgr? (addition)
  2335.      Returns type of software used to extend the Virtual Memory Mgr?
  2336.  
  2337.      gestaltVMExtensionMgr? = 'vmem';
  2338.      gestaltRAMDoubler?     = 'RaM2';
  2339.  
  2340.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  2341. OSType(7) (System [6.0.4])
  2342.      Returns LongInt('carl') and a result code of noErr.
  2343. OSType(13) (System [6.0.4])
  2344.      Returns LongInt('bbmc') and a result code of noErr.
  2345.  
  2346. Apple Additional Software
  2347. -------------------------
  2348. 3615 (Express Modem cp [1.0], part of Express Modem Software)
  2349. a pc (??? [???], part of System on Quadra 610-DOS?)
  2350. admn (AppleShare Admin appl [3.0])
  2351.      gestaltASAdminAttr?
  2352.  
  2353.      gestaltASAdminAttr?    = 'admn';
  2354.      gestaltASAdminPresent? = 0;
  2355. afps (AppleShare File Server? app? [4.0?])
  2356.      Bits 0 and 16 set.
  2357. AgVU (Agent VU ext [2.0?], part of Virtual User)
  2358. aslm (Shared Library Manager ext [1.1.1?])
  2359.      (System? [???])
  2360.      gestaltSharedLibraryMgrVersion?
  2361.      Returns the version of the Shared Library Manager as NumVersion?
  2362.  
  2363.      gestaltSharedLibraryMgrVersion? = 'aslm';
  2364.  
  2365.      NOTE: ASLM 1.1.1 final returns $01110003...
  2366. asps (AppleShare Print Server appl [3.0])
  2367.      gestaltASPrintServerAttr?
  2368.  
  2369.      gestaltASPrintServerAttr?    = 'asps';
  2370.      gestaltASPrintServerPresent? = 0;
  2371. AtEa (At Ease Startup [2.0?], part of At Ease for Workgroups)
  2372. bART (MacCheck app [1.0])
  2373. BaRT (MacCheck app [1.0])
  2374. comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
  2375.  
  2376.      NOTES:
  2377.      The name "QuickDraw Font Plus" is translated from Japanese and may be
  2378.      translated differently by Apple Computer, Inc.
  2379.  
  2380.      I think 'comp' stands for 'composite', as the INIT contains patches to
  2381.      the Font Manager needed to handle 'composite font suitcases'.
  2382.      (Marco Piovanelli)
  2383. doub (WorldScript II ext [???], part of KanjiTalk7)
  2384.      gestaltDoubleByteScriptVersion?
  2385.      Returns the version of WorldScript II as BCD?
  2386.  
  2387.      gestaltDoubleByteScriptVersion? = 'doub';
  2388.  
  2389.      NOTE:
  2390.      This selector seems to be installed by WorldScript II (the
  2391.      System 7.1 ext needed to handle double-byte scripts like Japanese,
  2392.      Korean and Traditional Chinese). Known returned value is $0x0710.
  2393.      (Marco Piovanelli)
  2394. fdbk (Speech Setup cp? [???], part of PlainTalk)
  2395. futr (ThreadsINIT ext [2.0?], part of Threads Package)
  2396. gFax (Fax Extension ext [1.1?], part of Express Modem Software)
  2397. hgfd (AppleShare File Server appl [3.0])
  2398.      gestaltASFileServerAttr?
  2399.  
  2400.      gestaltASFileServerAttr?    = 'hgfd';
  2401.      gestaltASFileServerPresent? = 0;
  2402. HrIt (HearIt cp [1.0])
  2403. immg (??? [???] on PowerBook 520/540?)
  2404. intD (??? [???])
  2405.  
  2406.      NOTE:
  2407.      This is a mystery selector.  It isn't installed by any software, as
  2408.      far as I know, but the Finder 7.1 checks for this selector in certain
  2409.      situations. (Marco Piovanelli)
  2410. iscd (ISO 9660 File Access ext [5.0], part of Apple CD-ROM Software)
  2411.      gestaltISO9660FAVersion? (not listed)
  2412.      Returns ISO 9660 File Access version in BCD?.
  2413.  
  2414.      gestaltISO9660FAVersion? = 'iscd';
  2415. lstk (Speech Setup cp? [???], part of PlainTalk)
  2416. ltma (Link Tool Manager ext [2.0?], part of Apple Remote Access 2.0)
  2417.      gestaltLinkToolVersion?
  2418.      Returns the version of the Link Tool Manager as NumVersion?
  2419.  
  2420.      gestaltLinkToolVersion? = 'ltma';
  2421.  
  2422.      NOTE:
  2423.      The only value I've seen returned was $02002008, which would mean
  2424.      '2.0d8' which was not correct since the 'vers' recource said '2.0f0'.
  2425.      The value is hardcoded in the .LTM Driver resource. (Rene Ros)
  2426. mash (System [7.1P?]/At Ease [1.0?])
  2427.  
  2428.      NOTE:
  2429.      The Starter cp (part of System 7.1P) contains a 'mash' resource and
  2430.      includes a template for it. Can this be the same data-structure?
  2431.      (Rene Ros)
  2432. mfdr (At Ease [1.0])
  2433. octb (??? [???] on PowerBook 520/540?)
  2434. ptlk (Speech Setup cp? [???], part of PlainTalk)
  2435. Remt (AutoRemounter cp [???])
  2436. slnk (MNPLinkTool? [1.0], part of Apple Remote Access)
  2437. sndx (Sound Manager ext [3.0]?)
  2438.      gestaltSoundMgrAttr?
  2439.  
  2440.      gestaltSoundMgrAttr?    = 'sndx'?;
  2441.      gestaltSoundMgrPresent? = 0?
  2442. thng (ThreadsINIT ext [2.0?], part of Threads Package)
  2443. thrd (ThreadsINIT ext [2.0?], part of Threads Package)
  2444.  
  2445. Third Parties Software
  2446. ----------------------
  2447. AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
  2448. ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
  2449. ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
  2450.      NOTE:
  2451.      Not installed by AfterDark but the GDEF indicates it is able to return
  2452.      a response.
  2453. ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
  2454.      NOTE:
  2455.      Not installed by AfterDark but the GDEF indicates it is able to return
  2456.      a response.
  2457. ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
  2458. AP00..AP06
  2459.      (RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
  2460.       by Insignia Solutions Inc.)
  2461.      It seems these selectors are installed for each harddisk connected to
  2462.      your Macintosh. The last two bytes of the selector are the SCSI ID.
  2463.      Although the third byte can mean something else, because perhaps
  2464.      'AP17' (listed below) is probably also installed by
  2465.      RapidLock/RapidTrack.
  2466. AP17 (???)
  2467. ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
  2468. ASTN (Asante EN/SC ext [???] by Asante Technologies, Inc.)
  2469. aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
  2470. AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
  2471. A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
  2472. bMRN (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
  2473.       by NOW Software)
  2474. CDJR (ExtendedAppleMenu [???] by Chris Derossi)
  2475. CHSR (ChooserUser [1.2?] by Maurice Volaski)
  2476. CiCN (Color ICON Mania cp [1.0] by Yosuke Suzuki)
  2477. DanS (PowerClick cp [1.0] by Daniel A. Segel)
  2478. DCDt (NoDesktopCleanup cp [1.0?] by Alessandro Levi Montalcini)
  2479. DCKc (Keys! cp [1.0] by Stefan Kurth)
  2480.      NOTE: The lowercase c is actually the control-q (Command key sign)
  2481.      character (ASCII $11).
  2482. DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
  2483. DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
  2484. DFlh (DiskFlash cp [1.0] part of ALSoft Power Utilities by ALSoft, Inc.)
  2485. Dpth (DepthMaster cp [1.0] by Victor Tan)
  2486. DWG! (Volume Menu cp [1.0], by David Gladstone, Chris Burns, Julian Harris)
  2487. EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
  2488. ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
  2489. ESOC (Serial of Champions ext [???] by Mike Throckmorton)
  2490. Extn (NOW Startup Manager cp [4.0?] part of NOW Utilities 4.0.1p package
  2491.       by NOW Software)
  2492. Fie  (Icon7 ext [???] by Inline Designs)
  2493.      gestaltIcon7?
  2494. fPth (FinderPaths cp? [???])
  2495.      NOTE: The f is actually the option-f character (ASCII $C4).
  2496. fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
  2497.      package)
  2498. FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
  2499. fWmM (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
  2500.       by NOW Software)
  2501. GrEG (Greg's Buttons ext [3.1.4?] by Greg Landweber)
  2502. GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  2503. gV00 (PowerPort cp? [???])
  2504. gV01 (PowerPort cp? [???])
  2505. gV02 (PowerPort cp? [???])
  2506. gV03 (PowerPort cp? [???])
  2507. gV04 (PowerPort cp? [???])
  2508. HAM  (???)
  2509. He20 (Helium cp [1.0?] by Robert L. Mathews)
  2510. HEID (Incognito cp [1.0?] by Manuel Veloso)
  2511. HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
  2512.      GDEF always returns value 1.
  2513. HtLk (Reference Link ext [1.0] by James W. Walker)
  2514. iHnd (Invisible Hand cp [1.0] by Carl Mauer)
  2515.      NOTE:
  2516.      Because this cp patches the _Random trap you can use this selector to
  2517.      determine its presence and refuse to continue.
  2518. Intj (Interjection ext [???])
  2519. JAiN (Rival cp by Inline Designs)
  2520.      gestaltRival
  2521.      NOTE: The i is actually the option-u/i character (ASCII $95).
  2522. jsm1 (???)
  2523. JXNM (NowMenus cp [4.0?] part of NOW Utilities 4.0.1p package
  2524.       by NOW Software)
  2525. KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
  2526. KBCM (???)
  2527. LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
  2528. LxRZ (Retro.SCSI? ext [2.0?] part of Retrospect by Dantz Development
  2529.      Corporation)
  2530.      (Remote? cp [2.0?] part of Retrospect by Dantz Development
  2531.      Corporation)
  2532. MClk (SuperClock! [4.0] by Steve Christensen)
  2533. MJC& (AutoMenus II cp [???] by Michael Conrad)
  2534. MV10 (TearOFF cp [???] by Bad Boys' Software)
  2535. nOAg (??? cp [1.2?], part of netOctopus by Pole Position)
  2536. nOAv (??? cp [1.2?], part of netOctopus by Pole Position)
  2537.      Returns version as NumVersion?
  2538. NGst (NokNok cp [1.0?])
  2539. NkNk (NokNok cp [1.0?])
  2540. NowT (NOW Toolbox ext [4.0?] part of NOW Utilities 4.0.1p package
  2541.       by NOW Software)
  2542. PBUf (???)
  2543. PBUt (???)
  2544. PRT+ (PrintAid [0.9?] by James W. Walker)
  2545. PtrP (PrintPatrol [1.0] by Randy DeRuiter and John Champion)
  2546. QRef (QuickRef ext? [1.0] by Scott Bronson)
  2547. RQDC (DropCheck cp [???] by Ronald B. Queloz)
  2548. SCTR (FaxMonitor ext [1.6?], part of FAXcilitate by PSI)
  2549. SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
  2550.      ALSoft, Inc.)
  2551. SFun (SF Windows [1.0] by Damon Cokenias)
  2552. SFwd (Open-wide cp [3.0?] by James W. Walker)
  2553. SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
  2554. ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
  2555. SDIT (???)
  2556. STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
  2557. TgrX (Xmas Lights cp [1.0] by Tiger Technologies)
  2558. Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
  2559. UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by
  2560.      Keisuke Hara)
  2561.      See also FtCg selector.
  2562. View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
  2563.      gestaltViewerEngine
  2564. vmFn (RAM Doubler [1.0] by Connectix Corporation)
  2565.      Seems to return a memory address, perhaps to a function to control
  2566.      Virtual Memory?
  2567.  
  2568.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  2569. WARE (???)
  2570. WREO (Replace Existing Options cp [???] by Jonathon Summers)
  2571.      NOTE: The W is actually the option-w character (ASCII $B7).
  2572. Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
  2573.      NOTE: The W is actually the option-w character (ASCII $B7).
  2574. *Men (OtherMenu ext [1.0] by James W. Walker)
  2575.  
  2576. Gestalt Manager Calls
  2577. =====================
  2578. All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
  2579. in this chapter.
  2580.  
  2581. Gestalt Manager Routines
  2582. ------------------------
  2583. The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
  2584. listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
  2585. documented. Sorry, for mixing Pascal and C source, I will convert
  2586. everything to C when I know enough about it and have the time.
  2587.  
  2588. FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
  2589.      Available since System 6.0.4.
  2590.      Trap Macro
  2591.        _Gestalt ($A1AD)
  2592.      Registers on entry   D0: selector code
  2593.      Registers on exit    A0: response
  2594.                           D0: result code
  2595.      Result codes
  2596.        noErr                       0 No error
  2597.        gestaltUnknownErr       -5550 Could not obtain the response
  2598.        gestaltUndefSelectorErr -5551 Undefined selector
  2599. FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
  2600.      Available since System 6.0.4.
  2601.      Trap Macro
  2602.        _NewGestalt ($A3AD)
  2603.      Registers on entry   A0: address of new selector function
  2604.                           D0: selector code
  2605.      Registers on exit    D0: result code
  2606.      Result codes
  2607.        noErr                       0 No error
  2608.        memFullErr               -108 Ran out of memory
  2609.        gestaltDupSelectorErr   -5552 Selector already exists
  2610.        gestaltLocationErr      -5553 Function not in system heap
  2611. FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
  2612.                          VAR oldGestaltFunction: ProcPtr): OSErr;
  2613.      Available since System 6.0.4.
  2614.      Trap Macro 
  2615.        _ReplaceGestalt ($A5AD)
  2616.      Registers on entry   A0: address of new selector function
  2617.                           D0: selector code
  2618.      Registers on exit    A0: address of old selector function
  2619.                           D0: result code
  2620.      Result codes
  2621.        noErr                       0 No error
  2622.        gestaltUndefSelectorErr -5551 Undefined selector
  2623.        gestaltLocationErr      -5553 Function not in system heap
  2624. #define CallSelectorFunctionProc(userRoutine, selector, response)  \
  2625.         (*userRoutine)(selector, response)
  2626.      Trap Macro 
  2627.        ??? (???)
  2628.      Registers on entry   ???
  2629.      Registers on exit    ???
  2630.      Result codes
  2631.        noErr                       0 No error
  2632.        ???                       ??? ???
  2633. #define NewSelectorFunctionProc(userRoutine)  \
  2634.         (SelectorFunctionUPP)(userRoutine)
  2635.      Trap Macro 
  2636.        ??? (???)
  2637.      Registers on entry   ???
  2638.      Registers on exit    ???
  2639.      Result codes
  2640.        noErr                       0 No error
  2641.        ???                       ??? ???
  2642.          
  2643. Undocumented Gestalt Manager Routines
  2644. -------------------------------------
  2645. FUNCTION? GestaltDispatch? (???):OSErr;?
  2646.      Trap Macro
  2647.        _GestaltDispatch ($A0AD)
  2648.      Registers on entry   ???
  2649.      Registers on exit    ???
  2650.      Result codes
  2651.        noErr                       0 No error
  2652.        ???
  2653.  
  2654.      NOTE:
  2655.      Found in the MPW, THINK C and THINK Pascal Traps Interface file
  2656.      on 'Bookmark CD 14'.
  2657.      Available since System 6.0.4 but code will always return error -50
  2658.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  2659. FUNCTION? GetGestaltProcPtr? (selector?: OSType;
  2660.                               var selectorfunction: ProcPtr): OSErr;?
  2661.      Trap Macro
  2662.        _GetGestaltProcPtr ($A7AD)
  2663.      Registers on entry   D0: selector code?
  2664.      Registers on exit    ??: address of selector function
  2665.      Result codes
  2666.        noErr                       0 No error
  2667.        ???
  2668.  
  2669.      NOTE:
  2670.      Found in the MPW Traps Interface file on 'Bookmark CD 14'.
  2671.      Available since System 6.0.4 but code will always return error -50
  2672.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  2673.      I (Rene Ros) have written Pascal code to do what this system call
  2674.      probably is planned to do in the future.
  2675.  
  2676. Gestalt Value Routines
  2677. ----------------------
  2678. Please note the GestaltValue routines are currently invoked through a
  2679. library, and only in the future will GestaltValue be moved into the OS
  2680. proper. The GestaltValue functions are stack based and don't use registers.
  2681. The GestaltValue library first checks to see if trap $ABF1 is implemented
  2682. (not with any system software available). If trap $ABF1 is implemented, all
  2683. calls to the library are routed to this trap, otherwise the library uses
  2684. embedded code.
  2685.  
  2686. WARNING:
  2687. The GestaltValue library distributed originally checks for the wrong trap
  2688. (_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
  2689. trap is installed by the Thread Manager extension. See the Related Software
  2690. chapter for availability (also on mail archive server).
  2691. (Most info about the GestaltValue functions was provided by
  2692. Marco Piovanelli and Dave Radcliffe).
  2693.  
  2694. FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  2695.      Available as glue code.
  2696.      Trap Macro                      Selector
  2697.        _GestaltValueDispatch ($ABF1) $0401
  2698.      Result codes
  2699.        noErr                       0 No error
  2700.        unimpErr                   -4 Unimplemented core routine
  2701.        memFullErr               -108 Ran out of memory
  2702.        (and other memory errors)
  2703.        gestaltDupSelectorErr   -5552 Selector already exists
  2704. FUNCTION ReplaceGestaltValue (selector: OSType;
  2705.                               replacementValue: LongInt): OSErr;
  2706.      Available as glue code.
  2707.      Trap Macro                      Selector
  2708.        _GestaltValueDispatch ($ABF1) $0402
  2709.      Result codes
  2710.        noErr                       0 No error
  2711.        unimpErr                   -4 Unimplemented core routine
  2712.        memFullErr               -108 Ran out of memory
  2713.        (and other memory errors)
  2714.        gestaltUndefSelectorErr -5551 Undefined selector
  2715. FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
  2716.      Available as glue code.
  2717.      Trap Macro                      Selector
  2718.        _GestaltValueDispatch ($ABF1) $0203
  2719.      Result codes
  2720.        noErr                       0 No error
  2721.        unimpErr                   -4 Unimplemented core routine
  2722.        gestaltUndefSelectorErr -5551 Undefined selector
  2723.  
  2724. History
  2725. =======
  2726. This chapter contains a short overview about the history of the Gestalt
  2727. Manager and its predecessors.
  2728.  
  2729. Environs
  2730. --------
  2731. PROCEDURE Environs (VAR rom,machine: INTEGER);
  2732.  
  2733. With the introduction of the Macintosh the system routine 'Environs' was
  2734. introduced. It allowed to obtain two pieces of information: the ROM version
  2735. and a value to indicate the machinetype. This "ROM oriented" way soon
  2736. appeared to be insufficient when the range of Macintosh hardware and
  2737. software became more diverse.
  2738.  
  2739. SysEnvirons
  2740. -----------
  2741. FUNCTION SysEnvirons (versionRequested: INTEGER;
  2742.                       VAR theWorld: SysEnvRec): OSErr;
  2743.  
  2744. With System 4.1 a new system routine was introduced which allowed the
  2745. programmer to obtain more information about the current configuration.
  2746. Upon completion SysEnvirons filled the SysEnvRec with the information.
  2747. This was however an "all-or-nothing" situation, it was not possible to
  2748. obtain just one piece of information.
  2749. To allow for larger system environment records with more information one
  2750. needed to specify the version number of the system environment record. The
  2751. last version, introduced with System 6, was version 2 which had nine fields.
  2752.  
  2753. Gestalt
  2754. -------
  2755. FUNCTION Gestalt (code: LONGINT; VAR feature: LONGINT): OSErr;
  2756.  
  2757. You may wonder how one can be so stupid to list the Gestalt routine wrong...
  2758. However, this is how the Gestalt routine was presented to developers in
  2759. the Preliminairy Developer Note regarding System 7 in 1989.
  2760. There was no selector of type OSType as we known it today. Instead a list
  2761. of numerical constants was used, like:
  2762.  
  2763.      zVersion    = $1;   { Gestalt Version }
  2764.      zMachType   = $100; { machine type }
  2765.      zSystemVers = $101; { system file version }
  2766.  
  2767. and nine others.
  2768. But the principle used with todays Gestalt routine was there: request one
  2769. specific piece of information and you'll get it. Nothing more and nothing
  2770. less. Back then it wasn't the Gestalt Manager since there was only one
  2771. routine. Both the NewGestalt and the ReplaceGestalt did not exist.
  2772. In June 1992 (released in February 1993?) three new functions were added
  2773. to the Gestalt Manager: NewGestaltValue, ReplaceGestaltValue and
  2774. DeleteGestaltValue
  2775.  
  2776. Reports
  2777. =======
  2778. When someone reports some findings involving several selectors and/or a
  2779. report is too long to include with the selector entry above, that report
  2780. is listed here. They should be as short as possible with the maximum
  2781. amount of information.
  2782.  
  2783. AppleShare File & Print Server selector codes
  2784. ---------------------------------------------
  2785. The selectors are defined when the application has run. If it is still
  2786. running (or wasn't properly quit) the response is one. When the application
  2787. has properly quit the response is zero.
  2788.      admn AppleShare Admin
  2789.      asps AppleShare Print Server
  2790.      hgfd AppleShare File Server
  2791. (these three are undocumented)
  2792.  
  2793. AppleTalk
  2794. ---------
  2795. With the release of the System 7 Tuner product, AppleTalk will not be
  2796. loaded at startup, if prior to the previous shutdown AppleTalk was turned
  2797. off in the Chooser. Under this circumstance, the 'atkv' selector is not
  2798. available. If the 'atkv' selector is not available under System 7, this is
  2799. an indicator that AppleTalk cannot be turned on without doing so in the
  2800. Chooser and rebooting the system. *AT02
  2801.  
  2802. Copy protection using Gestalt
  2803. -----------------------------
  2804. In Develop 17 Brigham Stevens suggests to use Gestalt and FindFolder as a
  2805. way to implement copy protection in the most compatible way possible.
  2806. By determining several characteristics at installation from the Gestalt Mgr
  2807. and the DirID of the System Folder with FindFolder you can check for this
  2808. info later. When is has changed you can then ask for the serial number
  2809. or a password again. (Rene Ros)
  2810.  
  2811. Environs & SysEnvirons
  2812. ----------------------
  2813. Using Macsbug it is very easy to determine that the SysEnvirons function
  2814. uses the Gestalt Manager to fill the fields of the system environment
  2815. record. So, when you install your own gestalt definitions by using the
  2816. ReplaceGestalt function this will also change the information returned
  2817. by SysEnvirons.
  2818. The older Environs function doesn't use the Gestalt Mgr and the glue code
  2819. seems to only look at two values in ROM. (Rene Ros)
  2820.  
  2821. Executor Mac-emulator
  2822. ---------------------
  2823. Executor is a Macintosh Emulator for DOS machines, published by
  2824. Abacus Research and Development, Inc. (1993/1994). The Gestalt Manager is
  2825. also emulated and the version I have seen (on a 486DX) says it's a MacPlus
  2826. with a 68LC040 processor with MMU. The 'sysv' selector returns 0x607 but
  2827. it also lists a lot of selectors usually not installed by 6.0.7. Like
  2828. the 'edtn' and 'stdf' selectors. It then simply returns zero.
  2829. Strangely enough the 'tabl' selector is not installed, but this doesn't
  2830. confuse the Gestalt! application! (Rene Ros)
  2831.  
  2832. GestaltValue
  2833. ------------
  2834. The first time you call NewGestaltValue, the library installs two non-
  2835. relocatable blocks in the system heap and the 'gval' gestalt selector. One
  2836. of the blocks is filled with code: it's actually a gestalt definition that
  2837. implements GestaltValue's shared mechanism. The second block contains the
  2838. selectors and values GestaltValue manages. The response returned by the
  2839. 'gval' selector is a pointer to the second non-relocatable block in the
  2840. system heap. (Marco Piovanelli)
  2841.      
  2842. Dave Radcliffe wrote on 23 March 1993 regarding some information, about the
  2843. GestalValue glue code, listed with version 1.4 of this list:
  2844. ---------------------------------------------------------------------------
  2845. The information on the _GestaltValue trap ($ABF2) is correct based on the
  2846. glue, but because of a mistake on my part, the glue should be checking for
  2847. $ABF1. A new version of the glue is being distributed on the developer CD
  2848. next month. If developers need the fixed version sooner, or don't have
  2849. access to the CD, they can write to me at:
  2850.  
  2851. radcliff@apple.com
  2852.  
  2853. and I'll send them the fixed version.
  2854. ---------------------------------------------------------------------------
  2855.  
  2856. Glue code
  2857. ---------
  2858. These development/compiler software contain glue-code to handle a few
  2859. selectors even when the Gestalt Manager is not available.
  2860.  
  2861.      THINK C      (5.0 and later)
  2862.      THINK Pascal (4.0 and later)
  2863.      MPW          (3.2 and later)
  2864.  
  2865. The following selectors can be handled by the glue-code, with all others
  2866. an error (gestaltUndefSelectorErr) will be returned.
  2867.  
  2868.      gestaltAppleTalkVersion = 'atlk';
  2869.      gestaltFPUType          = 'fpu ';
  2870.      gestaltKeyboardType     = 'kbd ';
  2871.      gestaltLogicalRAMSize   = 'lram';
  2872.      gestaltMachineType      = 'mach';
  2873.      gestaltMMUType          = 'mmu ';
  2874.      gestaltPhysicalRAMSize  = 'ram ';
  2875.      gestaltProcessorType    = 'proc';
  2876.      gestaltQuickdrawVersion = 'qd  ';
  2877.      gestaltSystemVersion    = 'sysv';
  2878.      gestaltVersion          = 'vers';
  2879.  
  2880. Unless you are using direct calls, ofcourse.
  2881. (Source: THINK Reference 2.0)
  2882.  
  2883. QuickTime
  2884. ---------
  2885. If you install QuickTime under System 6, a major portion of the Alias
  2886. Manager and FSSpec support is also added. But, QT doesn't implement the
  2887. Gestalt selectors because the implementation is not complete. You must
  2888. check for either Alias Mgr or QuickTime. (Michael Hecht)
  2889. If QuickTime is present, assume you have an Alias Manager, subject to some
  2890. limitations (NewAliasMinimalFromFullPath not present). Nearly all the
  2891. FSSpec calls are available (except FSpExchangeFiles) in System 6 when
  2892. QuickTime is installed. See for more information Technical Note
  2893. M.QT.MovieTB.Q&As (QT 510).
  2894.  
  2895. RAM Doubler 1.0
  2896. ---------------
  2897. It looks like RAM Doubler tricks the system in thinking there is virtual
  2898. memory but actually stores it somewhere else in memory instead to disk
  2899. which we are used to before RAM Doubler came around. It also looks like
  2900. this is done in corporation with Apple since a selector installed by
  2901. RAM Doubler is 'vmem' which is all lower-case and thus reserved by Apple.
  2902. In addition the response from this selector is always LongInt('RaM2') which
  2903. is the creator type of RAM Doubler. It seems this selector is used to
  2904. indicate which software is used to extend the capabilities of the Virtual
  2905. Memory Manager.
  2906. RAM Doubler also installs the selector 'vmFn' which seems to be a pointer
  2907. to a function to control RAMDoubler or to obtain information. It looks like
  2908. registers are used to pass parameters to and from that function. D0 perhaps
  2909. holds values 1 to 6 as input and perhaps A0 is used for the return value.
  2910.  
  2911. FUNCTION VMExtensionControl? (selector: Integer; VAR result: LongInt): OSErr;
  2912.      Registers on entry   D0: selector code
  2913.      Registers on exit    A0: result code
  2914.                           D0: error code
  2915.      Result codes
  2916.        noErr                       0 No error
  2917.        invalidSelector?          206 Invalid selector value?
  2918.        ???
  2919.  
  2920. Values used as selector:
  2921. CONST
  2922.      kVMControlType?        = 1;      {type VM extension: RaM2}
  2923.      kVMControlVersion?     = 2;      {version VM extension as BCD}
  2924.      kVMControl???          = 3;      {engine version as BCD?: $0313}
  2925.      kVMControlMemSize?     = 4;      {unknown: Get/SetMemorySize?}
  2926.      kVMControlMemSize?     = 5;      {unknown: Get/SetMemorySize?}
  2927.      kVMControl???          = 6;      {unknown}
  2928.      kVMContolMaxFunctions? = MAXINT; {returns number of valid selectors}
  2929.                                       {or any other value outside the}
  2930.                                       {current 1-6 range}
  2931.  
  2932. Remember: all this is heresay!!!
  2933.  
  2934. Because of all this you can imagine RAM Doubler replaces/installs the
  2935. following System Software selectors (and I think it does):
  2936. lram, pgsz, ram , vm  , vmbs. (Anonymous, Rene Ros)
  2937.  
  2938. Kilo-liners
  2939. ===========
  2940. This chapter will list very small pieces of code which are related to
  2941. any Gestalt Routine.
  2942.  
  2943. Modula-2 source:
  2944. TYPE
  2945.     SelectorFunction =
  2946.       PROCEDURE
  2947.       (
  2948.        (*selector :*) OSType,
  2949.        VAR (*response :*) LONGCARD
  2950.       ) : OSErr;
  2951.  
  2952. C-source:
  2953. typedef pascal OSErr (*SelectorFunction)(OSType, long);
  2954.  
  2955. Direct Gestalt Calls
  2956. --------------------
  2957. You can use the following code to call directly the Gestalt, NewGestalt and
  2958. ReplaceGestalt traps. In that way the (large) glue code will not be
  2959. installed by your compiler. (Contributions by Lawrence D'Oliveiro and
  2960. Marco Piovanelli).
  2961.  
  2962. Modula-2 source:
  2963.     PROCEDURE Gestalt
  2964.       ( selector : OSType;
  2965.         VAR response : LONGINT
  2966.       ) : OSErr;
  2967.       (* direct call to Gestalt trap. *)
  2968.  
  2969.         CODE
  2970.             0225FH,    (* move.l (sp)+, a1 *)
  2971.             0201FH,    (* move.l (sp)+, d0 *)
  2972.             0A1ADH,    (* _Gestalt *)
  2973.             02288H,    (* move.l a0, (a1) *)
  2974.             03E80H;    (* move.w d0, (sp) *)
  2975.  
  2976. Pascal-source:
  2977.      FUNCTION Gestalt (selector: OSType;
  2978.                        VAR response: LONGINT): OSErr;
  2979.      {direct call to Gestalt trap.}
  2980.      inline $225F, $201F, $A1AD, $2288, $3E80;
  2981.  
  2982. Modula-2 source:
  2983.      PROCEDURE NewGestalt
  2984.       ( selector: OSType;
  2985.         gestaltFunction: SelectorFunction
  2986.       ): OSErr;
  2987.      (* direct call to NewGestalt trap. *)
  2988.  
  2989.      CODE   0205FH,    (* move.l (sp)+, a0 *)
  2990.             0201FH,    (* move.l (sp)+, d0 *)
  2991.             0A3ADH,    (* _NewGestalt *)
  2992.             03E80H;    (* move.w d0, (sp) *)
  2993.  
  2994. Pascal-source:
  2995.      FUNCTION NewGestalt (selector: OSType;
  2996.                           gestaltFunction: ProcPtr): OSErr;
  2997.      {direct call to NewGestalt trap}
  2998.      inline $205F, $201F, $A3AD, $3E80;
  2999.  
  3000. Modula-2 source:
  3001.     PROCEDURE ReplaceGestalt
  3002.       ( selector : OSType;
  3003.         gestaltFunction : SelectorFunction;
  3004.         VAR oldGestaltFunction : SelectorFunction
  3005.       ) : OSErr;
  3006.       (* direct call to Gestalt trap. *)
  3007.  
  3008.         CODE
  3009.             0225FH,    (* move.l (sp)+, a1 *)
  3010.             0205FH,    (* move.l (sp)+, a0 *)
  3011.             0201FH,    (* move.l (sp)+, d0 *)
  3012.             0A5ADH,    (* _ReplaceGestalt *)
  3013.             02288H,    (* move.l a0, (a1) *)
  3014.             03E80H;    (* move.w d0, (sp) *)
  3015.  
  3016. Pascal-source:
  3017.      FUNCTION ReplaceGestalt (selector: OSType;
  3018.                               gestaltFunction: ProcPtr;
  3019.                               VAR oldGestaltFunction: ProcPtr
  3020.                              ): OSErr;
  3021.      {direct call to ReplaceGestalt trap.}
  3022.      inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
  3023.  
  3024. Direct GestaltValue Calls
  3025. -------------------------
  3026. You can use the following code to call directly the NewGestaltValue,
  3027. ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
  3028. trap is available.
  3029.  
  3030. Pascal-source: *AS04
  3031.      FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
  3032.      inline $303C, $0401, $ABF1;
  3033.  
  3034.      FUNCTION ReplaceGestaltValue(selector: OSType,
  3035.                                   replacementValue: LongInt): OSErr;
  3036.      inline $303C, $0402, $ABF1;
  3037.      
  3038.      FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
  3039.      inline $303C, $0203, $ABF1;
  3040.  
  3041. GestaltSelectorZero
  3042. -------------------
  3043. With all the selectors that are supposed to return non-zero values if
  3044. installed, it may be helpful to have a utility routine that returns a zero
  3045. value (instead of an error) if a selector isn't installed. It's short and
  3046. sweet because it makes a direct call to the _Gestalt trap; of course this
  3047. means you can't use it on systems earlier than 6.0.4.
  3048. (Contributed by Lawrence D'Oliveiro)
  3049.  
  3050. Modula-2 source:
  3051.      PROCEDURE GestaltSelectorZero (Selector: OSType): LONGCARD;
  3052.      (* returns the value of the specified Gestalt selector,
  3053.      or zero if unknown. *)
  3054.      CODE   0201FH,    (* move.l (sp)+, d0 *)
  3055.             0A1ADH,    (* _Gestalt *)
  3056.             06702H,    (* beq.s @2 *)
  3057.             091C8H,    (* sub.l a0, a0 *)
  3058.             02E88H;    (* @2: move.l a0, (sp) *)
  3059.  
  3060. Pascal-source:
  3061.      FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
  3062.      {returns the value of the specified Gestalt selector,}
  3063.      {or zero if unknown.}
  3064.      inline $201F, $A1AD, $6702, $91C8, $2E88;
  3065.  
  3066. Call Gestalt Definiton Direct
  3067. -----------------------------
  3068. Suppose you have just loaded a GDEF resource, or replaced one and keep the
  3069. original around and store a pointer to it somewhere private. Suppose next,
  3070. you want to call it to obtain a response without using yet another selector.
  3071. Thats what the following inline code is useful for. Just pass it the
  3072. usual selector and result parameters but also a pointer to the GDEF
  3073. (Lock it if it's still a relocatable block).
  3074.  
  3075. Pascal-source:
  3076.      FUNCTION CallGestaltDEF (selector: OSType;
  3077.                               var result: LongInt;
  3078.                               aRoutine: ProcPtr): OSErr;
  3079.      inline $205F, $4E90;
  3080.             {MOVE.L (SP)+, A0}
  3081.             {JSR (A0)}
  3082.  
  3083. Abbreviations
  3084. =============
  3085. A/UX     - Apple UNIX
  3086. ADB      - Apple Desktop Bus
  3087. AMU      - Apple Memory Unit?
  3088. ARTA     - Apple Real Time Architecture
  3089. AS       - AppleShare
  3090. ASC      - Apple Sound Chip
  3091. ASCII    - American Standard Code for Information Interchange
  3092. ASIC     - Application specfic integrated circuit
  3093. AWAC     - ??? (???)
  3094. Caboose  - processor that manages the keyswitch, system power,
  3095.            the real-time clock, and parameter RAM
  3096. CDEF     - Control DEFinition (code resource)
  3097. CISC     - Complex Instruction Set Computer (compare with RISC)
  3098. CLUT/DAC - color look-up table and digital-to-analog converter IC
  3099. Combo    - chip, combines the functions of the SCC and the SCSI controller
  3100. CPU      - Central Processing Unit
  3101. DAFB     - Direct Access Frame Buffer
  3102. DAV      - Digital Audio Video (connector)
  3103. DDC      - Display Driver Chip
  3104. DFAC     - Digitally Filtered Audio Chip
  3105. DITL     - Dialog ITems List (resource)
  3106. DLL      - Dynamically Linkable Library
  3107. DMA      - Direct Memory Access
  3108. DN       - Developer Note
  3109. DOS      - Disk Operating System (to run a computer???)
  3110. DSP      - Digital Signal Processor
  3111. FAT      - File Allocation Table (?)
  3112. FPU      - Floating Point Unit
  3113. GDEF     - Gestalt DEFinition (code resource)
  3114. GPi      - General Purpose Input
  3115. IM       - Inside Macintosh
  3116. IOP      - Input/Output Processor
  3117. IWM      - Integrated Woz Machine
  3118. JDB      - Junction Data Bus
  3119. MacOS    - Macintosh Operating System
  3120. MCU      - Memory Control Unit
  3121. MAE      - Macintosh Application Environment (Mac system on UNIX RISC)
  3122. MEA      - Macintosh Easy Open
  3123. MMU      - Memory Management Unit
  3124. NBP      - Name Binding Protocol
  3125. OCE      - Open Colloboration Environment
  3126. OSA      - Open Scripting Architecture
  3127. OSL      - Object Support Library
  3128. OSS      - ???
  3129. PB       - PowerBook
  3130. PDS      - Processor-Direct Slot
  3131. PGC      - Parity Generator Chip
  3132. PMMU     - Paged Memory Management Unit
  3133. PSRAM    - Pseudo Static RAM
  3134. PPC      - Process-to-Process Communication, also:
  3135.            PowerPC
  3136. ProDOS   - Professional Disk Operating System? (OS for the Apple //)
  3137. PWM      - Pulse-Width Modulated?
  3138. QD       - QuickDraw
  3139. RAM      - Random Access Memory (see DRAM & SRAM, compare ROM)
  3140. RAMDAC   - Random Access Memory, Digital/Analog Converter
  3141. RBV      - RAM-Based Video
  3142. RISC     - Reduced Instruction Set Computer (compare with CISC)
  3143. ROM      - Read Only Memory
  3144. RTC chip - Real-Time Clock chip
  3145. SCC      - Serial Communications Controller
  3146. SCSI     - Small Computer System Interface
  3147. SDP      - Standard Directory Package
  3148. SIMM     - Single In-line Memory Module
  3149. SMP      - Standard Mailer Package
  3150. Sonic    - chip for built-in Ethernet
  3151. Sporty   - a custom IC that provides sound output amplification functions
  3152. SRAM     - Static RAM
  3153. SWIM     - Super-Wozniak Integrated Machine OR
  3154.            Sanders-Wozniak Integrated Machine
  3155. TE       - TextEdit (32Kb limited built-in text-engine)
  3156. TN       - Technical Note
  3157. TTS      - Text-To-Speech
  3158. VIA      - Versatile Interface Adapter
  3159. VRAM     - Video RAM
  3160. VM       - Virtual Memory
  3161. VDAC     - Video Digital to Analog Converter
  3162. YANCC    - Yet Another NuBus Controller Chip
  3163.  
  3164. FA       - File Access
  3165. RA       - Remote Access
  3166.  
  3167. Sources
  3168. =======
  3169. A    Apple Computer, Inc.
  3170. AD    Documentation & Magazines
  3171. AD01   MacTCP Programmer's Guide
  3172. AD02   AppleTalk Remote Access API External Reference Specification
  3173. AD03   Macintosh Easy Open programmer's docs
  3174. AD04   Thread Manager 1.1 and 2.0 documentation
  3175. AD05   Drag Manager Programmer's Guide
  3176. AD06   Sound Manager Tech Note on BookMark CD 16
  3177. AD07   Develop 17, p. 123
  3178. AD08   MAE Compatibility Hints
  3179.  
  3180. AS    Software, source code & header files
  3181. AS01   QuickTime ImageCompression source files
  3182. AS02   CommToolbox 1.1 source files
  3183. AS03   MPW Interface files on Bookmark CD 14
  3184. AS04   GestaltEqu header file on ETO 12
  3185. AS05   GestaltEqu header file on ETO 13
  3186. AS06   GestaltEqu header file on BookMark CD 17
  3187. AS07   TSMTE header file on BookMark CD 17
  3188. AS08   AppleScript header file on ETO 14
  3189. AS09   CMApplication header file on ETO 14
  3190. AS10   Drag header file on ETO 14
  3191. AS11   XTNDInterface header file on ETO 14
  3192.  
  3193. AT    Technical Notes:
  3194. AT01   TN M.OV.GestaltSysenvirons (OV 16), May 1987
  3195. AT02   TN M.NW.AppleTalk2 (NW 13), Feb.1992
  3196. AT03   TN M.DV.CD-ROMDriver (DV 22), May 1993
  3197. AT04   TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
  3198. AT05   TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
  3199. AT06   TN OS 05 - System Update 3.0, July 1993/Rev. May 1994
  3200.  
  3201. S    Symantec Corp.
  3202. S01    THINK Pascal 4.0 interface files
  3203. S02    THINK C GestaltGlue source files
  3204. S03    THINK Reference 1.0 and 2.0
  3205.  
  3206. M    Miscellaneous sources
  3207. M01    Gestalt DA 0.4 1990 (Carl C.Hewitt)
  3208. M02    Gestalt dcmd 1.0 (Eric Simenel, Apple Computer France)
  3209. M03    sysvINIT source files (Apple Computer Japan, Inc.)
  3210. M04    TMON Professional Reference Manual, p.192 (ICOM Simulations)
  3211. M05    AfterDarkGestalt.h file (Berkeley Systems, Inc.)
  3212.  
  3213. Related Software
  3214. ================
  3215. Listed below is software which may be of interest to developers because
  3216. they are a tool providing information from the Gestalt Manager, include
  3217. Gestalt-related source code or provide additional capabilities to the
  3218. Gestalt Manager. Included is also were you can find or get a copy.
  3219. All software available on sumex-aim.stanford.edu is also available on the
  3220. INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
  3221. may have one or more mirror sites as well. Locations on CompuServe are not
  3222. included.
  3223. Some software listed below can also be found at the mail-archive server,
  3224. see the chapter 'Availability' for more information.
  3225.  
  3226. 5thColumn, GestaltProbe (Kamran Golriz, Apple Computer Inc.)
  3227.      Extension with MPW Tools to query other mac on a network, one of
  3228.      the tools is GestaltProbe.
  3229.        CD-ROM: Bookmark CD (Apple Developer Group)
  3230.                  :Tools & Applications:Network & Communications:5th Column:
  3231. AEgestalt (Kent Sandvik, Apple Computer Inc.)
  3232.      Uses Apple Events to get Gestalt response from remote machine,
  3233.      includes C-source. (Requires color?? Doesn't run on MacPlus)
  3234.        FTP:    ftp.apple.com [130.43.2.3]
  3235.                  /dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
  3236.        CD-ROM: Bookmark CD (Apple Developer Group)
  3237.                  :Documentation & Samples:Sample Code:Snippets:
  3238.                  Platforms & Tools:AEGestalt 1.0:
  3239. AfterDark Gestalt header file (Berkeley Systems, Inc.)
  3240.      Header file for using the gestalt selectors used by many screensavers.
  3241.        email:  gestalt-selectors-list-request@bio.vu.nl
  3242.                  archive get src/AfterDarkGestalt.h
  3243.                brklysystm@aol.com (Berkeley Systems Mac Tech Support)
  3244.                  ask them nicely to email the AfterDarkGestalt.h file.
  3245. DisplayGestalt (Craig Marciniak)
  3246.      Small application displays configuration using Gestalt Mgr, includes
  3247.      C-source.
  3248.        FTP:    mac.archive.umich.edu [141.211.120.11]
  3249.                  /development/libraries/displaygestalt.cpt.hqx
  3250.        email:  gestalt-selectors-list-request@bio.vu.nl
  3251.                  archive get software/displaygestalt.cpt.hqx
  3252. Feature Teller 1.0 (Jennifer Minge, Apple Computer Inc.)
  3253.      Sample application quering Gestalt Mgr (or SysEnvirons if not
  3254.      available). Includes THINK Pascal source.
  3255.        CD-ROM: Bookmark CD (Apple Developer Group)
  3256.                  :Tools & Applications:OS/Toolbox:Feature Teller 1.0:
  3257. Gestalt! 3.0 (Roland Mansson)
  3258.      Displays responses from installed selectors.
  3259.        FTP:    ftp.lu.se [130.235.132.90]
  3260.                  /pub/mac/util/gestalt300.cpt.hqx
  3261.                sumex-aim.stanford.edu [36.44.0.6]
  3262.                  /info-mac/cfg/gestalt-300.hqx
  3263.        email:  gestalt-selectors-list-request@bio.vu.nl
  3264.                  archive get software/gestalt-30-app.cpt.hqx
  3265. GestaltDA 0.4 (Carl C. Hewitt, Apple Computer Inc.)
  3266.      Displays responses from installed selectors.
  3267.        CD-ROM: Bookmark CD (Apple Developer Group)
  3268.                  :Tools & Applications:OS/Toolbox:GestaltDA 0.4
  3269. Gestalt DCMD (Apple Computer Inc.)
  3270.      This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
  3271.      when you're in MacsBug.
  3272.        FTP:    ftp.apple.com [130.43.2.3]
  3273.                  /dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
  3274.        CD-ROM: Bookmark CD (Apple Developer Group)
  3275.                  :Documentation & Samples:Sample Code:Snippets:
  3276.                  Platforms & Tools:Gestalt dcmd:
  3277. GestaltExt (Andre Cavegn)
  3278.      External for 4TH Dimension Relational Database application from
  3279.      ACI/ACI US.
  3280.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  3281.                  /info-mac/cfg/tech-tool-104.hqx
  3282.        email:  gestalt-selectors-list-request@bio.vu.nl
  3283.                  archive get software/gestalt-ext.hqx
  3284. GestaltGlue (???)
  3285.      Glue code and interface in C and assembly.
  3286.        CD-ROM: Bookmark CD (Apple Developer Group)
  3287.                  :Documentation & Samples:Sample Code:System 7.0 samples:
  3288.                  DTS.Utilities:Gestalt*
  3289. Gestalt Pro 1.1.2 (Rene G.A. Ros)
  3290.      External for 4TH Dimension Relational Database application from
  3291.      ACI/ACI US.
  3292.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  3293.                  /info-mac/dev/a4d/ext/gestalt-pro-112.hqx
  3294.        email:  gestalt-selectors-list-request@bio.vu.nl
  3295.                  archive get software/gestalt-pro-112-.sit.hqx
  3296. GestaltTalk (Brigham Stevens, Apple Computer DTS)
  3297.      Code part of Notification Hacks to show how you can communicate
  3298.      between an application and an INIT using the Gestalt Mgr. Includes
  3299.      C-source files.
  3300.        CD-ROM: Bookmark CD (Apple Developer Group)
  3301.                  :Documentation & Samples:Sample Code:Snippets:
  3302.                  Toolbox:Notification Hacks:GestaltTalk:
  3303. GestaltValue (anonymous, Apple Computer Inc.)
  3304.      Library and interface for use of the GestaltValue functions.
  3305.        CD-ROM: Bookmark CD (Apple Developer Group)
  3306.                  :Tools & Applications:OS/Toolbox:GestaltValue:
  3307.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  3308.                  /info-mac/dev/gestalt-value-lib.hqx
  3309.        email:  Dave Radcliffe, Mac DTS (radcliff@apple.com)
  3310.                gestalt-selectors-list-request@bio.vu.nl
  3311.                  archive get software/gestaltvalue-lib.hqx
  3312. GestaltWatch ext 1.0a1 (Scott Bronson)
  3313.      Tracks all calls to NewGestalt and ReplaceGestalt traps.
  3314.      Not yet available.
  3315. Gestalt XFCN 3.2.1 (Jeff Iverson)
  3316.      Hypercard XFCN to query the Gestalt Manager.
  3317.        FTP:    sumex-aim.stanford.edu [36.44.0.6]
  3318.                  /info-mac/card/gestalt-321.hqx
  3319.        email:  gestalt-selectors-list-request@bio.vu.nl
  3320.                  archive get software/gestalt-321-xfcn.hqx
  3321. Gestaltzeigen appl 1.0 (B. Kevin Hardman)
  3322.      Displays responses from installed selectors and any bit
  3323.      interpretation. Not yet available.
  3324. Go Gestalt appl 1.0b (Paul Reznick)
  3325.      Displays information obtained thru the Gestalt Mgr. 
  3326.        email:  gestalt-selectors-list-request@bio.vu.nl
  3327.                  archive get software/go-gestalt-10b.sit.hqx
  3328. TechTool appl 1.0.4 (Micromat Computer Systems)
  3329.      Application to reset PRAM, rebuild DTDB and show Gestalt info.
  3330.        email:  gestalt-selectors-list-request@bio.vu.nl
  3331.                  archive get software/tech-tool-104.hqx
  3332. Technical Notes: (Apple Computer Inc.)
  3333.      M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
  3334.      M.NW.AppleTalk2         (AppleTalk The Rest Of the Story)
  3335.      M.OS.GestaltMgr.Q&As    (Gestalt Manager Questions and Answers)
  3336.        FTP:    ftp.apple.com [130.43.2.3]
  3337.                  /dts/mac/tn/
  3338.                    overview.ov/ov-16-gestalt-and-sysenvir.hqx
  3339.                    networking.nw/appletalk2.hqx
  3340.                    operating.system.os/os-505-gestalt-mgr-qas.hqx 
  3341.        CD-ROM: Bookmark CD (Apple Developer Group)
  3342.                  :Documentation & Samples:Mac Tech Notes:
  3343.                    Overview (OV):OV 16 - Gestalt & SysEnvirons
  3344.                    Networking (NW):NW 13 - AppleTalk The Rest Of
  3345.                    Operating System (OS):OS 505 - Gestalt Mgr Q&As
  3346. Test Gestalt (Apple Computer Inc.)
  3347.      Examples to test for QuickDraw version and Virtual Memory status,
  3348.      includes C-source.
  3349.        FTP:    ftp.apple.com [130.43.2.3]
  3350.                  /dts/mac/sc/snippets/toolbox/testgestalt.hqx
  3351.        CD-ROM: Bookmark CD (Apple Developer Group)
  3352.                  :Technical Documentation:Sample Code:Snippets:
  3353.                  Toolbox:TestGestalt:
  3354. Userfunction Gestalt code (by Rich Kubota, Apple Computer Inc.)
  3355.      Source code in C for Apple Installer Script writers.
  3356.        FTP:    ftp.apple.com [130.43.2.3]
  3357.                  /dts/mac/sc/snippets/platforms.tools/
  3358.                    userfunction-gestalt.hqx
  3359.  
  3360. About this list
  3361. ===============
  3362. The Gestalt Manager is a collection of system routines which allow
  3363. applications to test for the availability of software and hardware. Because
  3364. of the increasing number of different software and hardware configurations,
  3365. this is getting an important issue. It probably already is and known by the
  3366. term 'compatability'.
  3367. The Gestalt function allows applications to obtain information about the
  3368. current configuration. Selectors are used to refer to certain information.
  3369. A selector is of type OSType (a four byte value) and usually contain four
  3370. ASCII characters. For example: the selector 'sysv' returns the version of
  3371. the current system. Other functions, NewGestalt and ReplaceGestalt, allow
  3372. programmers to install their own Gestalt selectors.
  3373. Programmers need to know these selectors beforehand to be able to request
  3374. and interpret the value returned by the Gestalt function.
  3375. See for more detailed information on how to use the Gestalt Manager
  3376. routines Inside Macintosh part VI (old series). The upcoming Inside
  3377. Macintosh: Operating Utilities will replace IM VI.
  3378. When you already have one or more of the new IM issues you may be a bit
  3379. disappointed. I was, because of the very minimal information provided
  3380. regarding the availability of the system routines. Of most routines you
  3381. will find no information on how to test their availability.
  3382.  
  3383. This Gestalt Selectors List intends to list all know selectors, but in
  3384. practice it lists all selectors known to the editor.
  3385. I would like to see this list to be a combined effort by different persons
  3386. who have together access to a wide area of information.
  3387. This list may contain (educated) guesses and perhaps even false
  3388. information, so no guarantee is made about the contents.
  3389. You may use this information freely (see Legal Stuff chapter), but when
  3390. you find information not included with this list; please tell me. If you
  3391. have additions, corrections, comments, suggestions, news about available
  3392. software, etc., mail it me. Please, also mention the source you used,
  3393. if any.
  3394. You can send contributions, remarks, etc. to this email address:
  3395.     gestalt-selectors-list@bio.vu.nl
  3396. If you want to remain anonymous, please mention this and it will be taken
  3397. care of.
  3398. I don't have all the documentation or knowledge and I don't want to, and
  3399. I'am certainly not Mr.Gestalt.
  3400.  
  3401. Availability
  3402. ------------
  3403. If you downloaded this list from CompuServe, a BBS, or any other service,
  3404. you will notice some strange things like 'FTP-sites' which have to do
  3405. with the fact that this list originates from INTERNET.
  3406.  
  3407. This list is originally distributed in the following ways:
  3408.  
  3409. **INTERNET**
  3410.  
  3411. USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
  3412. This list has become too large to post to c.s.m.p., so starting from
  3413. version 2.2 this list is no longer posted there. Instead an announcement
  3414. will be posted informing were you can find the latest version.
  3415.  
  3416. FTP-site
  3417. sumex-aim.stanford.edu [36.44.0.6]
  3418. Every minor and major version is submitted to the info-mac archives at
  3419. sumex-aim.stanford.edu. (/info-mac/dev/info/gestalt-selectors-XX.hqx)
  3420. It is also available on its mirror sites.
  3421. Contact: Info-Mac Moderator (info-mac-request@sumex-aim.stanford.edu)
  3422.  
  3423. FINGER
  3424. Using Finger to obtain the latest version is no longer possible.
  3425.  
  3426. **COMPUSERVE**
  3427.  
  3428. Starting with version 2.0 this list will be uploaded to the
  3429. Macintosh Developers Forum (MACDEV). Only new minor and major versions
  3430. will be uploaded once. It will then appear in the Tools/Debuggers (13)
  3431. section.
  3432.  
  3433. **GENERAL**
  3434.  
  3435. CD-ROM or BBS
  3436. Because of permissions I granted you may get this list from a CD-ROM or via
  3437. a BBS from Internet, CompuServe or a CD-ROM. If you do, and the release was
  3438. more than two months ago, there probably already is a newer version.
  3439.  
  3440. MAILING LIST
  3441. Every person on the mailing list gets automatically an update by email
  3442. whenever there are some changes. If you want to subscribe or unsubscribe to
  3443. this mailing list you need to send an email to this address:
  3444.      gestalt-selectors-list-request@bio.vu.nl
  3445. Then put in the subject line either 'subscribe' or 'unsubscribe'.
  3446.  
  3447. The mailing list is moderated, which means everybody can email to:
  3448.     gestalt-selectors-list@bio.vu.nl
  3449. But only after approval of the moderator the other subscribers will receive
  3450. your posting. This guarantees that no confidential contribution is
  3451. distributed before the moderator sees it.
  3452.  
  3453. This service is only possible to those who have an account on Internet or
  3454. any other network reachable from Internet (CompuServe, AOL, AppleLink,
  3455. Fidonet). I can not provide mailing of printed versions or on disk by
  3456. normal surface mail.
  3457.  
  3458. MAIL ARCHIVE SERVER
  3459. Your can retrieve the latest versions of this list and other software
  3460. by sending an email to this address:
  3461.      gestalt-selectors-list-request@bio.vu.nl
  3462. In the subject line you need to enter 'archive' and then put one command
  3463. behind it or more in the body of your email. These commands can be:
  3464.      help             to get some help on using the archive server
  3465.      ls <dir>         to list the contents of the specified directory
  3466.      get <dir>/<file> to have the specified file sent to you by email.
  3467. To obtain the abstracts of all files available you can use this command:
  3468.      get ABSTRACTS
  3469.  
  3470. PRINTED
  3471. If you want this list printed on paper you may want to try a feature
  3472. included with the new LaserWriter 8 software. With it you can print four
  3473. pages on a single sheet of paper. When you set the page breaks correct,
  3474. this produces a very neat, little booklet.
  3475.  
  3476. Acknowledgements
  3477. ----------------
  3478. I want to thank the following persons for their contribution to this list:
  3479.  
  3480. _NAME                                                 INTERNET EMAIL ADDRESS_
  3481. Anonymous contributor(s)                             <anonymous@secret.cia>
  3482. Lonnie R. Abelbeck                              <abelbeck@dev.abelbeck.com>
  3483. Daniel Azuma                                       <dazuma@cco.caltech.edu>
  3484. J.D. Sterling Babcock                                    <jdsb@ee.duke.edu>
  3485. Ivan M Cavero Belaunde                              <ivanski@world.std.com>
  3486. Mason L. Bliss                                       <mason@cis.umassd.edu>
  3487. Scott Bronson                                       <urge@mcl.mcl.ucsb.edu>
  3488. Jim Browne                                          <jbrowne@ncsa.uiuc.edu>
  3489. Mark Dawson                                                <marc@apple.com>
  3490. Lawrence D'Oliveiro                                     <ldo@waikato.ac.nz>
  3491. M. David Greenspon                            <gremicf@yalevm.ycc.yale.edu>
  3492. C.K. Haun                                                  <haun@apple.com>
  3493. Michael Hecht                                   <Michael_Hecht@mac.sas.com>
  3494. Robert Hess                                  <robert_hess@macweek.ziff.com>
  3495. Mark B. Johnson                                        <mjohnson@apple.com>
  3496. David B. Lamkins                                        <dblamkins@aol.com>
  3497. Roland Mansson                                   <roland.mansson@ldc.lu.se>
  3498. Matsubayashi Kohji                          <matubays@ics.es.osaka-u.ac.jp>
  3499. Duane Murphy, Novell Inc.                          <damurphy@wc.novell.com>
  3500. Mark Nagata                                   <nagata@kurims.kyoto-u.ac.jp>
  3501. Fabrizio Oddone                                       <simula3@di.unito.it>
  3502. Marco Piovanelli                              <piovanel@ghost.dsi.unimi.it>
  3503. Kees Pols                                                 <kpols@bio.vu.nl>
  3504. Francois Pottier                                   <pottier@clipper.ens.fr>
  3505. Jon Pugh                                               <jonpugh@netcom.com>
  3506. Quinn                                                 <quinn@cs.uwa.edu.au>
  3507. Dave Radcliffe, Apple Computer Inc.                    <radcliff@apple.com>
  3508. Pete Resnick                                      <resnick@cogsci.uiuc.edu>
  3509. Leonard Rosenthol                                     <leonardr@netcom.com>
  3510. Jeremy Roussak                                      <jeremyr@dcs.qmw.ac.uk>
  3511. Ray Sanders                                      <72511.232@CompuServe.COM>
  3512. Eric Schlegel, Microsoft                             <ericsc@microsoft.com>
  3513. Zalman Stern                                             <zalman@adobe.com>
  3514. Victor Tan                                     <victort@extro.ucc.su.oz.au>
  3515. Rodrigo Torres, Berkeley Systems Mac Tech Support      <brklysystm@aol.com>
  3516. John Watte                                            <d88-jwa@nada.kth.se>
  3517. Chris Wysocki                                          <wysocki@netcom.com>
  3518.  
  3519. And my colleagues at the Computer Department at the Biology Faculty of the
  3520. Free University in Amsterdam, The Netherlands for their help and support.
  3521. Also special thanks to Marco Piovanelli for his support and comments about
  3522. preliminary versions and updates.
  3523.  
  3524. The persons mentioned above provided information used in this list. They
  3525. did this on personal title, NOT on behalf of their employer, unless
  3526. explicitly stated otherwise.
  3527. I assume information you mail to me about Gestalt selectors may be used in
  3528. this list. Information made available to the general public (e.g. a posting
  3529. to a USENET newsgroup) is also included and the persons name added to this
  3530. chapter (and to the mailing list).
  3531. I will mail you back to thank you and include the parts from the list which
  3532. were changed, according to the information you provided, to let you check
  3533. them.
  3534.  
  3535. Definitions and Format
  3536. ======================
  3537. This chapter explains where the word 'Gestalt' comes from, a few things
  3538. are defined and it explains how each selector code entry looks like.
  3539.  
  3540. Use in Language
  3541. ---------------
  3542. Webster's Dictionary (?):
  3543.      ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
  3544.      \-<\e>n\ or gestalts (1922)
  3545.        [G, lit., shape, form]
  3546.        :a structure, configuration, or pattern of physical, biological,
  3547.        or psychological phenomena so integrated as to constitute a
  3548.        functional unit with properties not derivable by summation of its
  3549.        parts.
  3550. German-Dutch dictionary:
  3551.      Gestalt w [-en]
  3552.        stature, figure, form; Ritter von der Traurigen -, knight of the
  3553.        sorrowful figure.
  3554.  
  3555. Definitions
  3556. -----------
  3557. Apple System Software
  3558.      These are selectors installed by System Software from Apple Computer,
  3559.      Inc.
  3560.      Inside Macintosh says this about them:
  3561.      "Apple reserves for its own use all four-character sequences
  3562.      consisting solely of lowercase letters and non alphabetic ASCII
  3563.      characters".
  3564.  
  3565. Apple Additional Software
  3566.      These are selectors installed by additional software from Apple
  3567.      Computer, Inc. The same as with the system software selectors applies.
  3568.  
  3569. Third Parties Software
  3570.      These are selectors installed by software from parties other than
  3571.      Apple Computer, Inc.
  3572.      Inside Macintosh says about these:
  3573.      "If you have registered a creator string with Apple, you are strongly
  3574.      encouraged to use that sequence as your selector code".
  3575.      This type of selectors is included in this list with the motto "If you
  3576.      don't know they are there, you can't do anything with them".
  3577.      Especially the Third Party selectors may change with every new release
  3578.      and are therefore only listed in the 'known selectors' part when the
  3579.      author has described the structure in the documentation or by email to
  3580.      me. These selectors don't have a high priority but when possible I
  3581.      want to know at least which software installs it to exclude it as
  3582.      possible "Apple selectors".
  3583.      Some people at Apple also differentiate between commercial developers
  3584.      and others, as being "third" and "fourth" parties respectively. But
  3585.      with this list this is not the case.
  3586.  
  3587. Format Selector Entry
  3588. ---------------------
  3589. Format used to display information about each selector:
  3590.  
  3591. selector code (Software name & type [since version], by company/author)
  3592.      constant name
  3593.      description
  3594.  
  3595.      CONST declaration; {remark} *ref.number to source
  3596.  
  3597.      NOTE and/or WARNING:
  3598.  
  3599. Where the type is one of:
  3600. app  application (APPL)
  3601. cp   control panel (cdev)
  3602. ext  extension (INIT/appe/RDEV etc.)
  3603.  
  3604. Example:
  3605.  
  3606. COLA (Sugarwater ext [1.0] by John Sculley)
  3607.      gestaltSugarwaterVersion
  3608.      Returns version of Sugarwater as NumVersion.
  3609.  
  3610.      gestaltSugarwaterVersion = 'COLA'; *AT01
  3611.  
  3612.      WARNING: This example is fictitious.
  3613.      NOTE:
  3614.      Sugarwater? See the book 'West of Eden, The End of Innocence at
  3615.      Apple' by Frank Rose.
  3616.  
  3617. Most selectors are listed as four characters, if there are only two or
  3618. three characters displayed the remainder are spaces (or it's a typo!).
  3619. Diacritical characters are shown in the most logical normal character and
  3620. at the end of the entry a note is included about which key-combination to
  3621. press with a normal International system and US keyboard layout to get the
  3622. required diacritical character and also its ASCII code.
  3623. When 'INF' is at the end of the first line it means it is an informational
  3624. selector, all others are environmental selectors.
  3625. The source reference number may also be used in other places than indicated
  3626. above. It then applies to other parts of the entry or to the whole entry.
  3627. A single question mark indicates an uncertainty regarding that information.
  3628. Three question marks indicate complete abcense of the information.
  3629. Some constant-names may not originate from official publications.
  3630.  
  3631. Format Version Numbers
  3632. ----------------------
  3633. BCD (Binary Coded Decimal)
  3634.      $0x0402 means 4.0.2.
  3635. INTEGER
  3636.      The decimal representation of the returned value is the version.
  3637. Double BCD (my own fantasy name..., RR)
  3638.      $00010108 means 1.1.8.
  3639. NumVersion
  3640.      The format of the LongInt response can be coerced into type NumVersion,
  3641.      which is the same format as used for the 'vers' resource type.
  3642.  
  3643.      type
  3644.       NumVersion = packed record
  3645.        case INTEGER of
  3646.         0: (majorRev: SignedByte;  {1st part of version number in BCD}
  3647.             minorRev: 0..9;        {2nd part is 1 nibble in BCD}
  3648.             bugFixRev: 0..9;       {3rd part is 1 nibble in BCD}
  3649.             stage: SignedByte;     {stage code: dev, alpha, beta, final}
  3650.             nonRelRev: SignedByte);{revision level of non-released version}
  3651.         1: (version: LONGINT);     {to use all 4 fields at one time}
  3652.        end;
  3653.  
  3654.      stage is one of: $20 = development
  3655.                       $40 = alpha
  3656.                       $60 = beta
  3657.                       $80 = final
  3658.  
  3659. Legal Stuff
  3660. ===========
  3661. (c) 1992-1994, Rene G.A. Ros
  3662.  
  3663. See other sections (below) for remarks regarding liability, trademarks and
  3664. distribution.
  3665.  
  3666. Notice of Liability
  3667. -------------------
  3668. The information in this list is distributed on an "AS IS" basis, without
  3669. warranty. While every precaution has been taken in the preparation of this
  3670. list, neither the editor nor any contributor shall have any liability to
  3671. any person or entity with respect to any liability, loss, or damage caused
  3672. or alleged to be caused directly or indirectly by the information contained
  3673. in this list or by the computer software and hardware products described
  3674. herein.
  3675.  
  3676. Trademarks
  3677. ----------
  3678. Throughout this list trademarked names are used. Rather than put a
  3679. trademark symbol in every occurrence of a trademarked name, I state I am
  3680. using the names only in an editorial fashion and to the benefit of the
  3681. trademark owner with no intention of infringement of the trademark.
  3682.  
  3683. Distribution
  3684. ------------
  3685. The information in this list may be used freely. When you use the
  3686. information in this list for COMMERCIAL purposes, you may consider sending
  3687. the editor a donation. You are not allowed to distribute this list outside
  3688. any computer network (especially printed, on disk or CD-ROM) unless you
  3689. have contacted the editor and received permission to do so. This is also to
  3690. ensure you have the latest version. The updates may not be distributed,
  3691. these are ONLY for the persons on the distribution list.
  3692.  
  3693. Permission for distribution is granted to:
  3694. Aladdin Systems                      (InstallerMaker software)
  3695. Arizona Macintosh Users Group        (BBS in a BOX CD-ROM)
  3696. IDG Communications Nederland         (MacWorld CD-ROM)
  3697. Pacific HiTech, Inc.                 (Info-Mac CD-ROM)
  3698. Quantum Technologies, Inc.           (The Right Stuffed CD-ROM)
  3699.  
  3700. You are not allowed to distribute modified versions of this list,
  3701. including, but not limited to, deleting, adding or moving text or adding
  3702. non-text parts. Distribution in any electronical format except a normal
  3703. (or compressed) text file is not allowed without permission.
  3704. You are not allowed to redistribute it with any other name than
  3705. 'gestalt-selectors-XX.YYY' (where XX is the version number and YYY the suffix
  3706. to indicate compression etc.) unless because of technical reasons. In such
  3707. case a name should be chosen which resambles it as closely as possible to
  3708. avoid confusion.
  3709.  
  3710. Editor's Address
  3711. ================
  3712. Rene G.A. Ros
  3713. student Computer Science (fulltime),
  3714.         Institute of Technology
  3715. member Computer Department (parttime),
  3716.        Biology Faculty of the Vrije University Amsterdam
  3717. contract programmer Pascal and C, also 4th Dimension and other data-bases
  3718.  
  3719. Del Court van Krimpenstraat 3
  3720. 1067 SG  Amsterdam - Geuzenveld
  3721. The Netherlands, Europe
  3722. Bank      : Postbank 4578223, Amsterdam
  3723.  
  3724. Phone#    : +31 20 611 92 74 / +31 20 611 87 00
  3725. Internet  : rgaros@bio.vu.nl (preferred)
  3726.             rgaros@nikhefk.nikhef.nl
  3727.             rener@htsa.aha.nl
  3728. CompuServe: >INTERNET: rgaros@bio.vu.nl
  3729.             100112,1363
  3730.  
  3731. Mailing list:
  3732. Internet    contributions:
  3733.             gestalt-selectors-list@bio.vu.nl
  3734.  
  3735.             to subscribed/unsubscribe and for the archive server:
  3736.             gestalt-selectors-list-request@bio.vu.nl
  3737.  
  3738. CompuServe  contributions:
  3739.             >INTERNET: gestalt-selectors-list@bio.vu.nl
  3740.  
  3741.             to subscribed/unsubscribe and for the archive server:
  3742.             >INTERNET: gestalt-selectors-list-request@bio.vu.nl
  3743.  
  3744. Please contact me at the INTERNET address. I read my mail there almost
  3745. daily, while I log on to CompuServe only once or twice a month.
  3746.